
入力のすべての行が特定の条件を満たしているかどうかをテストする 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