linuxshell腳本awk
① linux shell 編程 awk -F/ 'OFS="/"{$NF="";print}'`這條腳本是什麼意思,今天在公司的一個腳本中看見!
-F/ 欄位分隔符設為/ 將輸入文本流分割為多個欄位進行處理
OFS="/" 設置輸出時的欄位分隔符為/
$NF="" 將最後一個欄位內容設置為空,即去除每行的最後一個欄位
最後通過print列印出來。
例如,一個文本內容為:
a/b/c/d/e
h/i/j/k/l/m
處理後的輸出內容為:
a/b/c/d/
h/i/j/k/l/
② linux shell中awk的用法
這個。。。太多了。如果在這里就能說清楚,那麼其本身功能的強大性就值得質疑。
只能推薦一些電子書(網上都可以找到)和學習鏈接給你:
Unix awk使用手冊(第二版).doc
Awk - An Introction and Tutorial.doc
詳解著名的awk_oneliner.pdf
通用線程: awk 實例:
https://www.ibm.com/developerworks/cn/linux/shell/awk/awk-1/
③ Linux shell awk怎麼去除行內,重復列
awk-F"[-,]"'{for(i=1;i<=NF;i++)a[$i,NR]++}{for(jina){split(j,b,SUBSEP);if(b[2]==NR)printfb[1]""}printf" "}'關鍵詞.txt>去除重復後.txt
以此例測試通過。
關於awk二維數組的使用:
awk的多維數組在本質上是一維數組,更確切一點,awk在存儲上並不支持多維數組。awk提供了邏輯上模擬二維數組的訪問方式。例如,array[2,4] = 1這樣的訪問是允許的。awk使用一個特殊的字元串SUBSEP ( 34)作為分割欄位,在上面的例子中,關聯數組array存儲的鍵值實際上是2 344。
類似一維數組的成員測試,多維數組可以使用if ( (i,j) in array)這樣的語法,但是下標必須放置在圓括弧中。
類似一維數組的循環訪問,多維數組使用for ( item in array )這樣的語法遍歷數組。與一維數組不同的是,多維數組必須使用split()函數來訪問單獨的下標分量。split ( item, subscr, SUBSEP)。