awk でパターンに if else マッチを実行する方法 質問する

awk でパターンに if else マッチを実行する方法 質問する

以下のコマンドを試しました:

awk '/search-pattern/ {print $1}'

上記のコマンドの else 部分はどのように記述すればよいですか?

ベストアンサー1

古典的な方法:

awk '{if ($0 ~ /pattern/) {then_actions} else {else_actions}}' file

$0入力レコード全体を表します。

別の慣用的な言い方三項演算子の構文に基づくselector ? if-true-exp : if-false-exp

awk '{print ($0 ~ /pattern/)?text_for_true:text_for_false}'
awk '{x == y ? a[i++] : b[i++]}'

awk '{print ($0 ~ /two/)?NR "yes":NR "No"}' <<<$'one two\nthree four\nfive six\nseven two'
1yes
2No
3No
4yes

おすすめ記事