次の場合、終了コード1を返すにはawkが必要です。
- grepからawkへの入力は提供されません。
- 2番目のフィールドが空か存在しません。
grep が "SOME_PHRASE" を見つけた場合に動作しますが、対応するフレーズがない場合、戻りコード ($?) は 0 です。
grep -m1 -i '^SOME_PHRASE' test.txt | awk '{ if (length($val)==0 || $val=="" || length($2)==0) exit 1; else print $2; }'
test.txtの例
Test1 1234
Phrase 214324
予想出力:
$ echo $?
1
ベストアンサー1
実際には以下を組み合わせることができawk
ますgrep
。
awk 'BEGIN{rv=1} # Default return value is 1
tolower($0) ~ /^some_phrase/{ # Case insensitive search
if($2 != ""){ # If $2 is not empty,
print $2 # print the value,
rv=0 # and set the return value
}
exit # one match, do not process any more line
}
END{exit rv}
' test.txt