awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
現在我想打印列$ b中存在的值,但是在這種情況下它會打印整行。 我希望做的是使用從if語句b的值打印在該列想要在awk命令中使用其中的一個變量
awk < MigStat.stat -F: '{ if ($a == "load")b=8; } $1 == "D0001" && FNR== '$c' {print $b}'
現在我想打印列$ b中存在的值,但是在這種情況下它會打印整行。 我希望做的是使用從if語句b的值打印在該列想要在awk命令中使用其中的一個變量
的值傳遞的價值觀使用-v
選項:
awk -F: -v a=2 -v c=10 '$a=="load"{b=8}$1=="D0001"&&FNR==c{print $b}' MigStat
注:
要傳入變量,請使用awk
的-v
選項。
awk
讀取文件,您不需要使用重定向。
awk
的結構是condition{block}
。
awk
初始化變量0
所以如果b
尚未在塊$a=="load"{b=8}
設置,那麼{print $b}
將{print $0}
其中$0
是整行。
我嘗試了你的方式,但它仍然給出了整行作爲輸出 – 2013-04-09 04:41:55
這意味着條件'$ a ==「加載」'在文件中永遠不會是真的。 – 2013-04-09 07:57:54
您不需要重複分配b=8
。如果腳本與您在那裏發佈的內容一樣,則根本不需要$b
。
如果$a, $c
是shell變量:
awk -F: -v a="$a" -v c="$c" 'a=="load"&&$1=="D0001"&&NR==c{print $8;exit}' MigStat.stat
和更完善print $8
呼叫exit;
停止awk的處理還行。
您需要閱讀並理解http://cfajohnson.com/shell/cus-faq-2.html#Q24,然後重試。 – 2013-04-08 14:44:48