cut

連接文件並打印到標準輸出設備上

補充說明

cut 命令 用來顯示行中的指定部分,刪除文件中指定字段。cut 經常用來顯示文件的內容,類似於 type 命令。

說明:該命令有兩項功能,其一是用來顯示文件的內容,它依次讀取由參數 file 所指 明的文件,將它們的內容輸出到標準輸出上;其二是連接兩個或多個文件,如cut fl f2 > f3將把文件 fl 和 f2 的內容合併起來,然後通過輸出重定向符“>”的作用,將它們放入文件 f3 中。

當文件較大時,文本在屏幕上迅速閃過(滾屏),用戶往往看不清所顯示的內容。因此,一般用 more 等命令分屏顯示。爲了控制滾屏,可以按 Ctrl+S 鍵,停止滾屏;按 Ctrl+Q 鍵可以恢復滾屏。按 Ctrl+C(中斷)鍵可以終止該命令的執行,並且返回 Shell 提示符狀態。

語法

1cut(選項)(參數)

選項

1-b:僅顯示行中指定直接範圍的內容;
2-c:僅顯示行中指定範圍的字符;
3-d:指定字段的分隔符,默認的字段分隔符爲“TAB”;
4-f:顯示指定字段的內容;
5-n:與“-b”選項連用,不分割多字節字符;
6--complement:補足被選擇的字節、字符或字段;
7--out-delimiter= 字段分隔符:指定輸出內容是的字段分割符;
8--help:顯示指令的幫助信息;
9--version:顯示指令的版本信息。

參數

文件:指定要進行內容過濾的文件。

實例

例如有一個學生報表信息,包含 No、Name、Mark、Percent:

1[root@localhost text]# cat test.txt
2No Name Mark Percent
301 tom 69 91
402 jack 71 87
503 alex 68 98

使用 -f 選項提取指定字段(這裏的 f 參數可以簡單記憶爲 --fields的縮寫):

1[root@localhost text]# cut -f 1 test.txt
2No
301
402
503
1[root@localhost text]# cut -f2,3 test.txt
2Name Mark
3tom 69
4jack 71
5alex 68

--complement 選項提取指定字段之外的列(打印除了第二列之外的列):

1[root@localhost text]# cut -f2 --complement test.txt
2No Mark Percent
301 69 91
402 71 87
503 68 98

使用 -d 選項指定字段分隔符:

1[root@localhost text]# cat test2.txt
2No;Name;Mark;Percent
301;tom;69;91
402;jack;71;87
503;alex;68;98
1[root@localhost text]# cut -f2 -d";" test2.txt
2Name
3tom
4jack
5alex

指定字段的字符或者字節範圍

cut 命令可以將一串字符作爲列來顯示,字符字段的記法:

  • N- :從第 N 個字節、字符、字段到結尾;
  • N-M :從第 N 個字節、字符、字段到第 M 個(包括 M 在內)字節、字符、字段;
  • -M :從第 1 個字節、字符、字段到第 M 個(包括 M 在內)字節、字符、字段。

上面是記法,結合下面選項將摸個範圍的字節、字符指定爲字段:

  • -b 表示字節;
  • -c 表示字符;
  • -f 表示定義字段。

示例

1[root@localhost text]# cat test.txt
2abcdefghijklmnopqrstuvwxyz
3abcdefghijklmnopqrstuvwxyz
4abcdefghijklmnopqrstuvwxyz
5abcdefghijklmnopqrstuvwxyz
6abcdefghijklmnopqrstuvwxyz

打印第 1 個到第 3 個字符:

1[root@localhost text]# cut -c1-3 test.txt
2abc
3abc
4abc
5abc
6abc

打印前 2 個字符:

1[root@localhost text]# cut -c-2 test.txt
2ab
3ab
4ab
5ab
6ab

打印從第 5 個字符開始到結尾:

1[root@localhost text]# cut -c5- test.txt
2efghijklmnopqrstuvwxyz
3efghijklmnopqrstuvwxyz
4efghijklmnopqrstuvwxyz
5efghijklmnopqrstuvwxyz
6efghijklmnopqrstuvwxyz

打印最後5個字符:

遺憾的是, cut並沒有提供最後字符的支持. 不過我們可以通過字符串反轉來實現.

1[root@localhost text]# cat test.txt| rev | cut -c -5 | rev
2vwxyz
3vwxyz
4vwxyz
5vwxyz
6vwxyz

來源:https://github.com/jaywcjlove/linux-command

最後修改於: Wednesday, January 31, 2024

相關文章:

翻譯: