分隔符為什么放在BEGIN里就沒問題,難道我那樣寫錯了?
# awk 'BEGIN{FS="[: ]+";OFS=":"}NR==FNR{a[$1]=$2;next}{$2=a[$1];print}' b a
a:1:a1
b:2:b1
c:3:c1
我們知道awk可以進行類似于cut之類的操作,如一個文件data如下
zhc-123|zhang
hongchangfirst-99|zhang
hongchang-100|zhang
如果我們
awk -F ‘-’ ‘{print $1;}’ data
會打印出
zhc
hongchangfirst
hongchang
但是如果我想根據多個分隔符進行分割呢?一種辦法是兩次awk,但是我們可以一次告訴awk我們所有的分隔符,如-和|這兩個,如
awk -F ‘[-|]’‘{print $3;}’ data
會打印出
zhang
zhang
zhang
就這么簡單,還有一個問題,如果我們想用[]作為分隔符怎么辦?有辦法,這樣就行:
awk -F ‘[][]’‘{print $3;}’ data
這里在多說一個技巧,如果你想把兩個文件按照對應的每行放在同一行上,可以用paste,比如:
data1文件為
1
2
3
data2的文件為
zhang
zhc
hongchangfirst
那么你想要得到
1 zhang
2 zhc
3 hongchangfirst
那么你這樣就也可以,
paste data1 data2
默認使用tab鍵作為份分隔符,還可以自定義分隔符,如用=號:
paste -d‘=’ data1 data2
原文:http://blog.csdn.net/hongchangfirst/article/details/25071937
作者:hongchangfirst
hongchangfirst的主頁:http://blog.csdn.net/hongchangfirst