Linux - awk & cut

 
awk、cut 用途:分解字串

awk 基本用法


    ls -l | awk '{print $9"\t=>\t"$5}'

判斷式


    ls -l | awk '{if($5 > 2000) {print $9" is big!"} else {print $9" is small!"}}'

BEGIN & END


    ls -l | awk 'BEGIN {print "File\t=>\tSize"} {print $9"\t=>\t"$5} END {print "Done!\n"}'
    ls -l | awk 'BEGIN{SUM=0;} {if($5 <= 2000) SUM+=$5} END {print "Total is ... "SUM}'

正規表示法


    awk '/^B.*\s[0-9]*/ {print $0}' log.txt

置換句號成空白(也代表分割字串)


    echo abc.cgi | awk -F '.' '{print $1}'

列出a1與b1之間的所有行


    awk '/a1/, /b1/' log.txt

其他


ls -l | awk '{printf "%-20s %020s\n",$9,$5}' // 可格式化
ls -l | awk -va=1 '{print $5,$5+a}' // 可使用變數


awk '(NR==1||length(min)>length()){min=$0}END{print min}' data.txt    // 查檔案的最短一行
awk '{if (length(max)<length()) max=$0}END{print max}' data.txt       // 查檔案的最長一行  參考 
NR:目前行數
    length():目前行的長度
    length($0):計算字串長度


cut 基本用法


cut -c1-3 // 顯示第1~3個字元


-b :以字節為單位進行分割。這些字節位置將忽略多字節字符邊界,除非也指定了 -n 標誌。
-c :以字符為單位進行分割。
-d :自定義分隔符,默認为製表符。
-f :與-d一起使用,指定顯示哪个區域。
-n :取消分割多字節字符。僅和 -b 標誌一起使用。如果字符的最後一個字節落在由 -b 標誌的 List 参数指示的
範圍之内,该字符將被寫出;否則,該字符將被排除




沒有留言:

張貼留言