Linux command cut 用于文本處理。您可以使用此命令通過選擇列從文件中提取部分文本。
本文提供了一些可在日常命令行活動中使用的 cut 命令的實用示例。
對于大多數示例,我們將使用以下測試文件。
$ cat test.txt cat command for file oriented operations. cp command for copy files or directories. ls command to list out files and directories with its attributes.
1.選擇字符列
要從文件中僅提取所需的列,請使用 -c 選項。以下示例顯示文件 test.txt 每一行的第二個字符
$ cut -c2 test.txt a p s
如上所示,字符 a、p、s 是 test.txt 文件每一行的第二個字符。
2.使用范圍選擇字符列
通過指定用 - 分隔的開始和結束位置,也可以從文件中提取字符范圍。以下示例從名為 test.txt 的文件中提取每行的前 3 個字符
$ cut -c1-3 test.txt cat cp ls
3.使用開始或結束位置選擇字符列
可以使用 -c 選項將開始位置或結束位置傳遞給 cut 命令。
以下僅指定“-”之前的開始位置。此示例從 test.txt 文件中提取每行的第三個字符到結尾。
$ cut -c3- test.txt t command for file oriented operations. command for copy files or directories. command to list out files and directories with its attributes.
以下僅指定“-”之后的結束位置。此示例從 test.txt 文件的每行開頭提取 8 個字符。
$ cut -c-8 test.txt cat comm cp comma ls comma
當您沒有在“-”之前或之后指定數字時,將打印整行,如下所示。
$ cut -c- test.txt cat command for file oriented operations. cp command for copy files or directories. ls command to list out files and directories with its attributes.
4. 從文件中選擇特定字段
如果您想提取整個字段,而不是選擇 x 個字符,您可以組合選項 -f 和 -d。選項 -f 指定要提取的字段,選項 -d 指定輸入文件中使用的字段分隔符。
以下示例使用字段分隔符:(冒號)僅顯示 /etc/passwd 文件中每行的第一個字段。在這種情況下,第一個字段是用戶名。文件
$ cut -d':' -f1 /etc/passwd root daemon bin sys sync games bala
5. 從文件中選擇多個字段
您還可以從文件或標準輸出中提取多個字段。下面的示例顯示登錄 shell 為“/bin/bash”的用戶的用戶名和主目錄。
$ grep "/bin/bash" /etc/passwd | cut -d':' -f1,6 root:/root bala:/home/bala
要顯示字段范圍,請指定開始字段和結束字段,如下所示。在此示例中,我們選擇字段 1 到 4、6 和 7
$ grep "/bin/bash" /etc/passwd | cut -d':' -f1-4,6,7 root:x:0:0:/root:/bin/bash bala:x:1000:1000:/home/bala:/bin/bash
6. 僅當一行包含分隔符時才選擇字段
在我們的 /etc/passwd 示例中,如果您傳遞除 :(冒號)以外的其他分隔符,cut 將僅顯示整行。
在以下示例中,我們將分隔符指定為 |(管道),并且 cut 命令僅顯示整行,即使它沒有找到任何具有 | 的行。(管道)作為分隔符。
$ grep "/bin/bash" /etc/passwd | cut -d'|' -f1 root:x:0:0:root:/root:/bin/bash bala:x:1000:1000:bala,,,:/home/bala:/bin/bash
但是,可以使用 -s 選項僅過濾和顯示包含指定分隔符的行。
以下示例不顯示任何輸出,因為 cut 命令沒有找到任何具有 | 的行。(管道)作為 /etc/passwd 文件中的分隔符。
$ grep "/bin/bash" /etc/passwd | cut -d'|' -s -f1
7.選擇除指定字段外的所有字段
為了補充選擇字段列表,請使用選項 -complement。
以下示例顯示 /etc/passwd 文件中除字段 7 之外的所有字段
$ grep "/bin/bash" /etc/passwd | cut -d':' --complement -s -f7 root:x:0:0:root:/root bala:x:1000:1000:bala,,,:/home/bala
8.更改顯示的輸出分隔符
默認情況下,輸出分隔符與我們在 cut -d 選項中指定的輸入分隔符相同。
要更改輸出分隔符,請使用選項 –output-delimiter,如下所示。在此示例中,輸入分隔符是 :(冒號),但輸出分隔符是 #(哈希)。
$ grep "/bin/bash" /etc/passwd | cut -d':' -s -f1,6,7 --output-delimiter='#' root#/root#/bin/bash bala#/home/bala#/bin/bash
9. 將輸出分隔符更改為換行符
在此示例中,cut 命令輸出的每個字段都顯示在單獨的行中。我們仍然使用--output-delimiter,但值是$' ',這表明我們應該添加一個換行符作為輸出分隔符。
$ grep bala /etc/passwd | cut -d':' -f1,6,7 --output-delimiter=$' ' bala /home/bala /bin/bash
10. 結合 Cut 與其他 Unix 命令輸出
當你將它與其他一些 Unix 命令的 stdout 結合使用時,可以實現 cut 命令的強大功能。
一旦您掌握了我們上面解釋過的 cut 命令的基本用法,您就可以明智地使用 cut 命令來解決您的許多文本操作需求。
以下示例說明如何從ps 命令輸出中僅提取有用信息。我們還展示了如何在將最終輸出提供給 cut 命令之前使用 grep 和 sed 過濾 ps 命令的輸出。在這里,我們使用了剪切選項 -d 和 -f 我們在上面的例子中已經解釋過了。
$ ps axu | grep python | sed 's/s+/ /g' | cut -d' ' -f2,11- 2231 /usr/bin/python /usr/lib/unity-lens-video/unity-lens-video 2311 /usr/bin/python /usr/lib/unity-scope-video-remote/unity-scope-video-remote 2414 /usr/bin/python /usr/lib/ubuntuone-client/ubuntuone-syncdaemon 2463 /usr/bin/python /usr/lib/system-service/system-service-d 3274 grep --color=auto python
鏈接:https://bbs.huaweicloud.com/blogs/368236
-
Linux
+關注
關注
87文章
11292瀏覽量
209323 -
文件
+關注
關注
1文章
565瀏覽量
24727 -
命令
+關注
關注
5文章
683瀏覽量
22011
原文標題:掌握 Linux 中的 cut 命令:如何選擇文件列的實用技巧與示例
文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論