[英]Shell awk command with FS
我用awk命令創建了一個腳本,內容為:
myVar=$(awk -v FS="HAMMER=" 'NF>1{print $2}' TEST.properties)
echo "Appliances="$myVar
文件TEST.properties
包含以下內容:
...
HAMMER=foo1,foo2
JACKHAMMER=foo3
...
上面的命令返回
foo1,foo2
foo3
我應該如何修改命令以僅查找HAMMER
而不是查找每個包含HAMMER
單詞?
在字段分隔符FS
使用^
行的開頭:
awk -v FS="^HAMMER=" 'NF>1{print $2}'
但是,如果您具有鍵=值構造,則最好使用:
awk -v FS='[=,]' '$1=="HAMMER"{for(i=2;i<=NF;i++} print $i}'
字段分隔符設置為=
或,
。 如果第一個參數是您的關鍵字,請打印該行的所有其他參數。
要么:
awk -F'=' '$1=="HAMMER"{print $2}' file
要么:
grep -oP '(?<=^HAMMER=).*' file
awk -F= '/^HAMMER=/ { print $2 }' file
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.