天天看點

【shell指令】文本操作指令(grep、cut、sort、uniq、tee、paste、wc、tr、seq、printf、awk、sed、xargs)

grep指令

grep是行過濾工具;用于根據關鍵字進行行過濾

文法:

grep [選項] '關鍵字' 檔案名
           

常見選項

  • -i: 不區分大小寫
  • -v: 查找不包含指定内容的行,反向選擇
  • -w: 按單詞搜尋
  • -o: 列印比對關鍵字
  • -c: 統計比對到的行數
  • -n: 顯示行号
  • -r: 逐層周遊目錄查找
  • -A: 顯示比對行及後面多少行
  • -B: 顯示比對行及前面多少行
  • -C: 顯示比對行前後多少行
  • -l:隻列出比對的檔案名
  • -L:列出不比對的檔案名
  • -e: 使用正則比對
  • -E:使用擴充正則比對
  • ^key:以關鍵字開頭
  • key$:以關鍵字結尾
  • ^$:比對空行
  • --color=auto :可以将找到的關鍵詞部分加上顔色的顯示

案例

# grep -i root 1.txt 					忽略大小寫比對包含root的行
# grep -w ftp 1.txt 					精确比對ftp單詞
# grep -w hello 1.txt  					精确比對hello單詞;自己添加包含hello的行到檔案
# grep -wo ftp 1.txt  					列印比對到的關鍵字ftp(-o隻列印關鍵字本身)
# grep -n root 1.txt  					列印比對到root關鍵字的行好
# grep -ni root 1.txt  					忽略大小寫比對統計包含關鍵字root的行
# grep -nic root 1.txt 					忽略大小寫比對統計包含關鍵字root的行數
# grep -i ^root 1.txt  					忽略大小寫比對以root開頭的行
# grep bash$ 1.txt  					比對以bash結尾的行
# grep -n ^$ 1.txt 				        比對空行并列印行号
# grep ^# 1.txt 		                        比對以#号開頭的行
# grep -v ^# 1.txt 	                                比對不以#号開頭的行
# grep -A 5 mail 1.txt  	                        比對包含mail關鍵字及其後5行(比對了這一行, 前面5行也列印出來)
# grep -B 5 mail 1.txt  				比對包含mail關鍵字及其前5行
# grep -C 5 mail 1.txt 					比對包含mail關鍵字及其前後5行
           

cut指令

cut是列截取工具,用于列的截取

文法:

cut 選項  檔案名
           

常見選項

  • -c: 以字元為機關進行分割,截取
  • -d: 自定義分隔符,預設為制表符\t
  • -f: 與-d一起使用,指定截取哪個區域

案例

# cut -d: -f1 1.txt 			以:冒号分割,截取第1列内容
# cut -d: -f1,6,7 1.txt 	以:冒号分割,截取第1,6,7列内容
# cut -c4 1.txt 				截取檔案中每行第4個字元
# cut -c1-4 1.txt 			截取檔案中每行的1-4個字元
# cut -c4-10 1.txt 			截取檔案中每行的4-10個字元
# cut -c5- 1.txt 				從第5個字元開始截取後面所有字元
           

sort工具

sort工具用于排序;它将檔案的每一行作為一個機關,從首字元向後,依次按ASCII碼值進行比較,最後将他們按升序輸出。

選項

  • -u :去除重複行
  • -r :降序排列,預設是升序
  • -o : 将排序結果輸出到檔案中,類似重定向符号>
  • -n :以數字排序,預設是按字元排序
  • -t :分隔符
  • -k :以第N列作為排序條件
  • -b :忽略前導空格。
  • -R :随機排序,每次運作的結果均不同

案例

# sort -n -t: -k3 1.txt 			按照使用者的uid進行升序排列
# sort -nr -t: -k3 1.txt 			按照使用者的uid進行降序排列
# sort -n 2.txt 						按照數字排序
# sort -nu 2.txt 						按照數字排序并且去重
# sort -n 2.txt -o 3.txt 			按照數字排序并将結果重定向到檔案
# sort -R 2.txt 
# sort -u 2.txt 
           

uniq工具

uniq用于去除連續的重複行

常見選項

  • -i: 忽略大小寫
  • -c: 統計重複行次數
  • -d:隻顯示重複行

案例

# uniq 2.txt 
# uniq -d 2.txt 
# uniq -dc 2.txt