天天看點

Bash——awk指令和sed指令

cat train.txt | awk '$1<163481 {print $1 "." $2}' > target.txt
           

    該指令将train.txt中的每一行以"."為分隔符劃分為2段,然後選取第一段小于163481的行,輸出到指定檔案target.txt中。

awk 'condition {print ...}'
           

  val.txt每行為XXX.jpg..,希望删除最後連個小數點:

sed -i 's/\.\.//g' val.txt
           

    sed指令行格式為:

sed [-nefri] [動作] 輸入文本            
           

    -i:直接修改檔案内容,而不是由螢幕輸出

    -n:隻有經過sed特殊處理的那行才會輸出

    小數點.需要使用轉移符\,因為在正規表達式裡,.表示任意一個字元,*表示重複,.*表示任意一串字元

   train.txt包含了所有訓練圖檔名稱,卻發現沒有給标簽,本來希望有對指定行進行替換的指令,但是sed 's///g'好像沒有制定某些行的參數,後來發現sed的function有列印p這個參數,下列語句可以友善地列出train.txt的第1-6行:

cat train.txt | sed -n '1,6p'
           

    是以想到用下列語句分别對兩類給标簽,重定向到兩個檔案,然後合并,不過類數很多時這個方法好想不适用:

cat train.txt | sed -n '1,68580p' | sed 's/jpg/jpg 0/g'
           

繼續閱讀