すべての入力行をテストするための標準 Unix/Linux ユーティリティ

すべての入力行をテストするための標準 Unix/Linux ユーティリティ

入力のすべての行が特定の条件を満たしているかどうかをテストする Bash スクリプトを書いています。

述語を取得してすべての行を 0 または 1 に減らし、Linux ディストリビューションで標準的またはすぐに使用できるユーティリティを使用してループ コードを自分でコーディングしなくても済むようにする方法はありますか?

答え1

サンプルデータ(「欲しい"):

$ cat x
not this
want this
not that
want that

使用できるawk:

  • 1行が正規表現に一致する場合はaを出力します/want/
  • 0行が一致しない場合はaを印刷する
$ cat x | awk '{if(match($0,/want/)){print 1}else{print 0}}'
0
1
0
1

または試してみてsed:

  • 1のみを含む行を に置き換えます0(そうでない場合は として通過します1)
  • 「」を含む行を置換します欲しい" とともに1
  • ではない行を1に置き換える0
$ cat x | sed -re 's/^1$/0/' -e 's/^.*want.*$/1/' -e 's/^[^1][^$].*$/0/'
0
1
0
1

関連情報