91欧美超碰AV自拍|国产成年人性爱视频免费看|亚洲 日韩 欧美一厂二区入|人人看人人爽人人操aV|丝袜美腿视频一区二区在线看|人人操人人爽人人爱|婷婷五月天超碰|97色色欧美亚州A√|另类A√无码精品一级av|欧美特级日韩特级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux cut命令詳解

Linux愛好者 ? 來源:良許 ? 2020-08-14 16:23 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

cut命令在Linux和Unix中的作用是從文件中的每一行中截取出一些部分,并輸出到標準輸出中。我們可以使用cut命令從一行字符串中于以字節(jié),字符,字段(分隔符)等單位截取一部分內(nèi)容出來。

在本文中,我們通過一些例子來了解cut命令的使用,這些使用方法在我們的日常工作中也是非常常用的。

Cut 命令和語法

cut命令的基本語法如下:

$ cut OPTION... [FILE]...

我們先來了解一下cut的一些選項,cut命令必須要指定選項才能執(zhí)行。

-f: 提取指定的字段,cut命令使用Tab作為默認的分隔符。

-d:Tab是默認的分隔符,使用這一選項可以指定自己的分隔符。

-b: 提取指定的字節(jié),也可以指定一個范圍。

-c: 提取指定的字符,可以是以逗號分隔的數(shù)字的列表,也可以是以連字符分隔的數(shù)字的范圍。

–complement: 補充選中的部分,即反選。

–output-delimiter: 修改輸出時使用的分隔符。

--only-delimited: 不輸出不包含分隔符的列。

我們以如下的名為context.txt的文本文件和/etc/passwd文件來為例來進行說明。

$ cat content.txt Ubuntu LinuxMicrosoft WindowsOsX El CapitanUnixFreeBSD

如何指定分隔符

最常用的選項是-d和-f的組合,這會根據(jù)-d指定的分隔符和-f列出的字段來提取內(nèi)容。

例如在這個例子中只打印出 /etc/passwd 文件每一行的第一個字段,用的分隔符是:

$ cut -d':' -f1 /etc/passwdrootbindaemonadmlpsyncshutdownhaltmailoperatorgamesalvinliangxu...

在下面這個例子中我們用空格作為分隔符打印 content.txt 文件的第一個字段

$ cut -d " " -f 1 content.txt UbuntuMicrosoftOsXUnixFreeBSD

在下面這個例子中我們提取了多個字段。這里,我們使用冒號(:)分隔符從文件 /etc/passwd 中包含字符串 /bin/bash 的行提取第一和第六個字段。

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6root:/rootalvin:/home/alvin

要顯示字段的某個范圍,可以指定開始和結(jié)束的字段,中間用連字符(-)連接,如下所示:

$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7root0/root:/bin/bashalvin1000/home/alvin:/bin/bash

如何補全選擇的輸出

要補全選擇輸出的字段(即反選),使用--complement選項。這一選項輸出所有的字段,除了指定的字段。

在下面這個例子中輸出 /etc/passwd 文件中包含 /bin/bash 的行中除了第二個字段以外的所有字段:

$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -f2root0/root:/bin/bash

如何指定輸出的分隔符

使用--output-delimiter可以指定輸出的分隔符。輸入的分隔符由-d來指定,而輸出分隔符和輸入分隔符默認是一樣的。

我們先以下面的例子來測試不指定輸出分隔符時的輸出;

$ cut -d: -f1,7 /etc/passwd | sort | uniq -u_apt:/usr/sbin/nologinbackup:/usr/sbin/nologinbin:/usr/sbin/nologindaemon:/usr/sbin/nologindnsmasq:/usr/sbin/nologingames:/usr/sbin/nologingnats:/usr/sbin/nologinirc:/usr/sbin/nologinlandscape:/usr/sbin/nologinlist:/usr/sbin/nologinlp:/usr/sbin/nologinlxd:/bin/false

現(xiàn)在我們加上--output-delimiter選項,將輸出分隔符指定為空格:

$ cut -d: -f1,7 --output-delimiter ' ' /etc/passwd | sort | uniq -u_apt /usr/sbin/nologinbackup /usr/sbin/nologinbin /usr/sbin/nologindaemon /usr/sbin/nologindnsmasq /usr/sbin/nologingames /usr/sbin/nologingnats /usr/sbin/nologinirc /usr/sbin/nologinlandscape /usr/sbin/nologinlist /usr/sbin/nologinlp /usr/sbin/nologinlxd /bin/false

我們再測試一個例子,用分隔符讓每一行打印一個字段。

我們將--output-delimiter指定為$' '表換行。

輸出結(jié)果為:

$ grep root /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$' 'root/root/bin/bashoperator/root/sbin/nologin

如何以字符的方式提取內(nèi)容

-c選項可以用來根據(jù)字符位置進行提取,注意空格和Tab也以字符來處理。

打印 context.txt 文件每一行的第一個字符,如下:

$ cut -c 1 content.txtUMOUF

下面顯示了 context.txt 文件每一行的第一至七個字符;

$ cut -c 1-7 content.txtUbuntuMicrosoOsX ElUnixFreeBSD

我們再測試一下只指定開始或結(jié)束的位置。

下面提取第二個到最后一個字符:

$ cut -c2- content.txtbuntu Linuxicrosoft WindowssX El CapitannixreeBSD

提取第一到第四個字符:

cut -c-4 content.txtUbunMicrOsXUnixFree

如何根據(jù)字節(jié)提取

使用-b選項通過指定字節(jié)的位置來選擇一行的某一部分,使用逗號分隔每個指定位置,或用連字符-指定一個范圍。

下面這個例子提取 content.txt 文件每一行的第一,二,三個字節(jié):

$ cut -b 1,2,3 content.txt UbuMicOsXUniFre

我們也可以用如下命令列出一個范圍;

$ cut -b 1-3,5-7 content.txt Ubutu MicosoOsXEl UniFreBSD

一些實用的例子

cut是一個實用的命令,常常和其他Linux或Unix命令結(jié)合使用 。

例如如果你想提取 ps 命令中的 USER,PID和COMMAND:

ps -L u n | tr -s " " | cut -d " " -f 2,3,14-USER PID COMMAND0 676 /sbin/agetty -o -p -- u --keep-baud 115200,38400,9600 ttyS0 vt2200 681 /sbin/agetty -o -p -- u --noclear tty1 linux0 23174 -bash0 26737 ps -L u n0 26738 tr -s0 26739 cut -d -f 2,3,14-

再測試一個例子,提取內(nèi)存的 total,used和free值,并保存到一個文件中。

$ free -m | tr -s ' ' | sed '/^Mem/!d' | cut -d" " -f2-4 >> memory.txt$ cat memory.txt985 86 234

總結(jié)

cut命令可以和很多其他Linux或Unix命令通過管道連接??梢酝ㄟ^管道傳遞一個或多個過濾器進行額外的文本處理。

cut命令的局限性之一是它不支持指定多個字符作為分隔符。多個空格會被計算為多個字段分隔符,因此必須在cut命令前使用tr命令才能獲得需要的輸出。


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • Linux
    +關(guān)注

    關(guān)注

    88

    文章

    11760

    瀏覽量

    219039
  • UNIX
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    43047
  • TAB
    TAB
    +關(guān)注

    關(guān)注

    0

    文章

    17

    瀏覽量

    11860

原文標題:Linux cut 命令詳解

文章出處:【微信號:LinuxHub,微信公眾號:Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Linux新手必看!3個命令搞定所有“求助”,再也不用到處查文檔

    其實根本不用慌——Linux 早就自帶了 “說明書”,學會 3 個核心幫助命令,就能解決 90% 的操作疑問,比百度還快!
    的頭像 發(fā)表于 02-03 15:28 ?707次閱讀
    <b class='flag-5'>Linux</b>新手必看!3個<b class='flag-5'>命令</b>搞定所有“求助”,再也不用到處查文檔

    Kubernetes kubectl命令行工具詳解

    kubectl是Kubernetes官方提供的命令行工具,作為與Kubernetes集群交互的主要接口,它通過調(diào)用Kubernetes API Server實現(xiàn)對集群資源的全面管理。在生產(chǎn)環(huán)境中,運維工程師需要熟練掌握kubectl命令來完成日常的集群運維、應用部署、故障
    的頭像 發(fā)表于 02-02 16:40 ?427次閱讀

    Linux 下開發(fā)嵌入式必備命令速查表

    在嵌入式開發(fā)中,Linux系統(tǒng)幾乎成為必備的開發(fā)環(huán)境。不管你是在做STM32、RaspberryPi、還是基于ARM的板子,熟練掌握Linux命令不僅能加快開發(fā)效率,還能讓你在調(diào)試、交叉編譯、文件
    的頭像 發(fā)表于 01-19 09:06 ?884次閱讀
    <b class='flag-5'>Linux</b> 下開發(fā)嵌入式必備<b class='flag-5'>命令</b>速查表

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)板Linux驅(qū)動開發(fā)實戰(zhàn):RK3568內(nèi)核模塊符號導出詳解

    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)板Linux驅(qū)動開發(fā)實戰(zhàn):RK3568內(nèi)核模塊符號導出詳解
    的頭像 發(fā)表于 11-21 13:25 ?1201次閱讀
    【迅為工業(yè)RK3568穩(wěn)定可靠】itop-3568開發(fā)板<b class='flag-5'>Linux</b>驅(qū)動開發(fā)實戰(zhàn):RK3568內(nèi)核模塊符號導出<b class='flag-5'>詳解</b>

    Linux基礎(chǔ)命令的進階用法

    凌晨2點,正在熟睡的你被電話驚醒:"線上服務響應超時,用戶大面積投訴!" 你匆忙打開電腦,SSH 登錄服務器,面對滿屏的進程和日志,腦子一片空白——從哪里開始排查?用什么命令?怎么快速定位問題?
    的頭像 發(fā)表于 09-02 16:33 ?697次閱讀

    測試工程師都在用的Linux命令清單(建議收藏)

    作為一名工程師,熟練掌握Linux命令是基本功中的基本功。無論是日常工作中的系統(tǒng)維護,還是面試時的技術(shù)考核,Linux命令都是繞不開的核心技能。本文將從實戰(zhàn)角度出發(fā),系統(tǒng)梳理工程師必須
    的頭像 發(fā)表于 08-08 10:06 ?700次閱讀
    測試工程師都在用的<b class='flag-5'>Linux</b><b class='flag-5'>命令</b>清單(建議收藏)

    Linux基礎(chǔ)命令which詳解

    Linux系統(tǒng)中,which命令用于查找并顯示指定命令的可執(zhí)行文件路徑。這對于系統(tǒng)管理員和開發(fā)人員來說是一個非常有用的工具,可以幫助定位命令所在的位置,確認
    的頭像 發(fā)表于 07-29 17:58 ?856次閱讀

    linux系統(tǒng)awk特殊字符命令詳解

    Linux系統(tǒng)中,awk?是一種非常強大的文本處理工具,能夠?qū)ξ谋緮?shù)據(jù)進行分析、格式化和篩選。利用其內(nèi)置的特殊字符和操作符,用戶可以實現(xiàn)復雜的數(shù)據(jù)處理任務。以下對一些常見的awk特殊字符和操作符
    的頭像 發(fā)表于 07-28 16:38 ?643次閱讀

    一文掌握Linux命令

    作為一名運維工程師,熟練掌握Linux命令是基本功中的基本功。無論是日常工作中的系統(tǒng)維護,還是面試時的技術(shù)考核,Linux命令都是繞不開的核心技能。本文將從實戰(zhàn)角度出發(fā),系統(tǒng)梳理運維工
    的頭像 發(fā)表于 07-22 15:23 ?621次閱讀

    詳解Linux網(wǎng)絡(luò)管理中的關(guān)鍵命令

    本文檔概述了網(wǎng)絡(luò)管理中的關(guān)鍵命令,如ifconfig配置網(wǎng)絡(luò)接口,ip管理路由,ping測試連通性,以及nmap進行安全掃描。還介紹了nslookup和dig用于域名解析,tcpdump抓包分析,以及arp操作和nmap的深入應用。
    的頭像 發(fā)表于 07-04 11:37 ?1156次閱讀
    <b class='flag-5'>詳解</b><b class='flag-5'>Linux</b>網(wǎng)絡(luò)管理中的關(guān)鍵<b class='flag-5'>命令</b>

    達夢數(shù)據(jù)庫常用管理SQL命令詳解

    達夢數(shù)據(jù)庫常用管理SQL命令詳解
    的頭像 發(fā)表于 06-17 15:12 ?7184次閱讀
    達夢數(shù)據(jù)庫常用管理SQL<b class='flag-5'>命令</b><b class='flag-5'>詳解</b>

    SSH常用命令詳解

    SSH常用命令詳解
    的頭像 發(fā)表于 06-04 11:30 ?2013次閱讀

    Linux系統(tǒng)管理的核心概念

    在前一篇文章中,我們深入探討了Linux中的文件操作命令,如cp、mv、rm,以及文本處理命令grep、wc和管道符。本文將繼續(xù)深入Linux系統(tǒng)管理的核心概念,包括root用戶的角色
    的頭像 發(fā)表于 05-15 17:05 ?666次閱讀

    Linux常用命令大全

    Linux常用命令是指在Linux操作系統(tǒng)中廣泛使用的命令工具,這些命令工具可以完成各種不同的任務,如管理文件和目錄、操作進程、網(wǎng)絡(luò)通信、軟
    的頭像 發(fā)表于 05-03 18:08 ?1866次閱讀

    5個Linux性能監(jiān)控命令

    vmstat 命令可打印有關(guān)內(nèi)存、交換、I/O 和 CPU 活動的詳細報告。其中包括已用/可用內(nèi)存、交換入/出、磁盤塊讀/寫和 CPU 進程/閑置時間等指標。
    的頭像 發(fā)表于 04-09 10:34 ?824次閱讀