系統(tǒng)之家 - 系統(tǒng)光盤下載網(wǎng)站!

當前位置:系統(tǒng)之家 > 系統(tǒng)教程 > Linux使用文本處理工具awk

Linux如何使用文本處理工具awk(4)

時間:2015-01-14 18:22:52 作者:qipeng 來源:系統(tǒng)之家 1. 掃描二維碼隨時看資訊 2. 請使用手機瀏覽器訪問: https://m.xitongzhijia.net/xtjc/20150114/34882.html 手機查看 評論

  awk ’BEGIN {FS=“:”; print FILENAME} {print FILENAME}‘ /etc/passwd #FILENAME,$0-$N,NF 不能使用在BEGIN中,BEGIN中不能獲得任何與文件記錄操作的變量。

  h.獲得linux環(huán)境變量(ENVIRON)

  awk ’BEGIN {print ENVIRON[“PATH”];}‘ /etc/passwd #ENVIRON是子典型數(shù)組,可以通過對應鍵值獲得它的值。

  i.輸出數(shù)據(jù)格式設置(OFMT)

  awk ’BEGIN {OFMT=“%.3f”; print 2/3,123.11111111;}‘ /etc/passwd #OFMT默認輸出格式是:%.6g 保留六位小數(shù),這里修改OFMT會修改默認數(shù)據(jù)輸出格式

  j.按寬度指定分隔符

  echo 20100117054932 | awk ’BEGIN {FIELDWIDTHS=“4 2 2 2 2 3”} {print $1“-”$2“-”$3,$4“:”$5“:”$6}‘ #FIELDWIDTHS其格式為空格分隔的一串數(shù)字,用以對記錄進行域的分隔,F(xiàn)IELDWIDTHS=“4 2 2 2 2 2”就表示$1寬度是4,$2是2,$3是2 。。.。 。這個時候會忽略:FS分隔符

  k.RSTART RLENGTH

  awk ’BEGIN{start=match(“this is a test”,/[a-z]+$/); print start, RSTART, RLENGTH }‘

  awk ’BEGIN{start=match(“this is a test”,/^[a-z]+$/); print start, RSTART, RLENGTH }‘ #RSTART被匹配正則表達式首位置,RLENGTH匹配字符長度,沒有找到為-1.

  2.獲取外部變量

  a.獲取普通的外部變量

  test=’awk code‘

  echo | awk ’{print test}‘ test=“$test”

  echo | wawk ’BEGIN {print test}‘ test=“$test” #傳入的變量可以在action中獲取值,但是變量名與值放到’{action}‘后邊。其中BEGIN的action是不能獲得

  b.BEGIN程序塊的變量

  test=’awk code‘

  echo | awk -v test=“$test” ’BEGIN {print test}‘

  echo | awk -v test=“$test” ’{print test}‘ #用-v 傳入變量可以在3中類型的action 中都可以獲得到,但順序在 action前面

  c.獲得環(huán)境變量

  awk ’BEGIN {for (i in ENVIRON) {print i“=”ENVIRON[i];}}‘

  3.運算符

  a.賦值運算符、算術運算

  echo | awk ’BEGIN {a=1; b=5; c=3} {a+=5; b++; c--} END {print a, b, c, a*b}‘

  b.邏輯運算符

  awk ’BEGIN {a=1; b=2; print (a》5 && b《=2),(a》5 || b《=2);}‘

  c.關系運算符

  awk ’BEGIN{a=“11”;if(a 》= 9){print “ok”;}}‘ #》 《 可以作為字符串比較,也可以用作數(shù)值比較,關鍵看操作數(shù)如果是字符串 就會轉(zhuǎn)換為字符串比較。兩個都為數(shù)字 才轉(zhuǎn)為數(shù)值比較。字符串比較:按照ascii碼順序比較

  d.其它運算符

  awk ’BEGIN {a=“b”; print a==“b” ? “ok” : “err”;}‘ #三目運算

  awk ’BEGIN {a=“b”; arr[0]=“b”; arr[1]=“c”; print (a in arr);}‘ #判斷數(shù)組中是否存在該鍵值

  3.字符操作

  a.字符串轉(zhuǎn)數(shù)字

  awk ’BEGIN {a=“100”; b=“10test10”; print (a+b+0);}‘

  awk ’BEGIN {a=“100”; b=“10test10”; print a+b+0;}‘

  b.數(shù)字轉(zhuǎn)字符串

  awk ’BEGIN {a=100; b=100; c=(a“”b); print c}‘

  awk ’BEGIN {a=100; b=100; c=a“”b; print c}‘

  c.字符串連接

  awk ’BEGIN {a=“a”; b=“b”; c=a“”b; print c}‘

  3.數(shù)組操作

  a.賦值

  awk ’BEGIN {tB[“a”]=“a1”; tB[“b”]=1;}‘

  b.數(shù)組長度(length)

  awk ’BEGIN {tB[“a”]=“a1”; tB[“b”]=1; print length(tB)}‘

  awk ’BEGIN {info=“it is a test”; split(info,tA,“ ”); print asort(tA);}‘ #asort對數(shù)組進行排序,返回數(shù)組長度

標簽 命令

發(fā)表評論

0

沒有更多評論了

評論就這些咯,讓大家也知道你的獨特見解

立即評論

以上留言僅代表用戶個人觀點,不代表系統(tǒng)之家立場

其他版本軟件

熱門教程

人氣教程排行

Linux系統(tǒng)推薦

掃碼關注
掃碼關注

掃碼關注 官方交流群 軟件收錄