1. 程式人生 > >linux中cut、printf、awk、sed命令

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替換為空,操作到檔案