簡體   English   中英

使用FS的Shell awk命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM