我們知道可以通過工具grep或egrep按行篩選記錄,這裡我們可以通過cut工具對文字按列進行切分,它可以指定定界符,linux下製表符是預設的定界符。
#cut -f 2,3 textfile
這個命令可以顯示textfile檔案的第2、3列。
例如:有檔案如下:
# cat dept
10 accounting new york
20 research dallas
30 sales chicago
40 operations boston
1)# cut -f 2,3 dept
accounting new york
research dallas
sales chicago
operations boston
2)# cut -s -f 2,3 dept
accounting new york
research dallas
sales chicago
operations boston
其中-s選項可以過濾掉沒有按照指定定界符的行。
3)# cut -s -f1 --complement dept
accounting new york
research dallas
sales chicago
operations boston
使用-f1 --complement選項輸出結果不顯示第1行。
4)# cut -s -d":" -f1,2,3,4,5,6,7 dept
root:x:0:0:root:/root:/bin/bash
spark:x:481:480:spark:/var/lib/spark:/sbin/nologin
hue:x:480:479:hue:/usr/lib/hue:/bin/false
對於不是按照標準定界符分隔的檔案,可以使用-d引數指定定界符。
通過指定字段、字元、位元組範圍進行切割:
此種方法依賴於下表中的內容:
引數說明
n-n-m
-m從第n個字元、位元組、字段開始至行尾
從第n個字元、位元組、欄位至第m(包含)字元、位元組、字段
從第1個字元、位元組、字段開始至第m個字元、位元組、字段
-b-c
-f表示位元組
表示字元
表示字段
--output-delimiter
指定輸出定界符
例如:# cat cuttext
qwertyuiopasdfghjkl
qwertyuiopasdfghjkl
qwertyuiopasdfghjkl
1)# cut -c1-5,6-10 cuttext --output-delimiter ","
qwert,yuiop
qwert,yuiop
qwert,yuiop
Linux下使用cut切割有規則的列文字
data.txt no name mark percent 1 sarath 45 90 2 alex 49 98 3 anu 45 90 分隔符 定界符 為tab 製表符 如果我要取得第二列,所有人的名稱,有什麼好的辦法嗎?此時cut該大顯身手了。1 取得2,3列 即name,和mark cut ...
Shell基礎之 cut命令
cut命令用於從標準輸入檔案或文字檔案中按域或行提取文字 cut option file cut命令選項及其意義 c 指定提取的字元數或字元範圍 f 指定提取的域數或域範圍 d 改變域分隔符 cut c後跟數字表示字元數或字元範圍,共有三種表示方式 cn 表示第n個字元 cn m 表示n m個字元 ...
shell中cut的使用
cat etc passwd root x 0 0 root root bin bash bin x 1 1 bin bin sbin nologin daemon x 2 2 daemon sbin sbin nologin adm x 3 4 adm var adm sbin nologin c...