linux中cut、printf、awk、sed命令
cut、printf、awk、sed在linux中都是用來處理文字的命令,接下來一個一個看。
一、cut命令
cut [選項] 檔名
選項:
主要使用一下兩個引數,若是隻使用 -f 則預設的分割符為 \t
-f 列號:提取第幾列
-d 分隔符:按照指定的分割符分割列
命令說明:
cut 命令從檔案的每一行剪下位元組、字元和欄位並將這些位元組、字元和欄位寫至標準輸出。
如果不指定 File 引數,cut 命令將讀取標準輸入。必須指定 -b、-c 或 -f 標誌之一。
例:cut -f 2,4 stu.txt // 取出第2,4列,按 \t 分割
例:cut -f 2 -d ":" stu.txt // 取出第2列,按 : 分割
注意:cut是由侷限性的,若是資料中間有好多的空格,而你又是按照空格來切分的,這個時候會有好多的空白資料,但是awk可以解決這個問題。
二、printf命令
printf '輸出型別輸出格式' 輸出內容
輸出格式
%ns // 輸出字串,n為輸出幾個字元
%ni // 輸出整數,n為輸出幾個數字
%m.nf // 輸出浮點數,m為輸出的整數位,n為輸出的小數位
輸出格式
使用案例
printf '%s %s %s\n' 1 2 3 4 5 6
結果:
1 2 3
4 5 6
printf '%s\t%s\t%s\n' $(cat stu.txt)
結果:
原資料
執行後
三、awk命令
AWK是一種處理文字檔案的語言,是一個強大的文字分析工具。
之所以叫AWK是因為其取了三位創始人 Alfred Aho,Peter Weinberger, 和 Brian Kernighan 的Family Name的首字元。
直接上例子:
awk '{printf $2 "\n"}' a.txta.txt // 取出第2列
BEGIN
awk 'BEGIN{printf "this is a printf \n"} {printf $2 " " $3 "\n"}' student.txt
結果:在開始先輸出
this is a printf
NAME GENDER
優優 女
阿斌 男
堂哥 女
END
awk 'END{printf "this is a printf \n"} {printf $2 "\t" $3 "\n"}' student.txt
結果:在最後結束後輸出
NAME GENDER
優優 女
阿斌 男
堂哥 女
this is a printf
FS=":" // 按:號切割
awk 'BEGIN{FS="-"}{printf $1 "\n"}' a.txt
條件判斷
awk 'BEGIN{FS="-"}$2>10{printf $2 "\n"}' a.txt
條件1{執行1}條件2{執行2}
四、sed命令
Linux sed命令是利用script來處理文字檔案。
sed可依照script的指令,來處理、編輯文字檔案。
語法
sed [-hnV][-e<script>][-f<script檔案>][文字檔案]
引數
動作說明
例子:
sed -n '2p' student.txt // 檢視第二行
sed -i '1a xxxxxxx' a.txt // -i會操作到檔案,1a 追加第一行
sed -i '1c xxxxxxx' a.txt // 替換第一行的資料
sed -i '1d' a.txt // 刪除第一行
sed '4s/78/98/g' // 把4列的78換成98
sed -e '1s/xxx//g;2s/xxx//g'// 把第一列的xxx和第二列的xxx替換為空
sed -i -e '1s/xxx//g;2s/xxx//g'// 把第一列的xxx和第二列的xxx替換為空,操作到檔案