次のファイルがあります。
Volume1
created=Monday
blah blah
foo foo
lock mode=exclusive
ops
layer id=1
Volume2
created=Tuesday
jibber jabber
foo foo
ops
layer id=2
Volume3
created=Wednesday
blaaah
foooo
lock mode=shared
ops
layer id=3
私が望むのは「ロックパターン」のgrepです。パターンがあれば行全体を印刷し、そうでない場合は「NA」を印刷したいと思います。一致しない行の内容を印刷する方法がわからないようです。私はawkやsedもこれができると確信しています。
私は次のコードを試してきました。
grep -A6 Volume | grep "lock mode" <file>
この例では、出力に次のものが表示されます。
lock mode=exclusive
NA
lock mode=shared
ベストアンサー1
それは簡単ですperl
:
perl -l -00 -ne 'print /lock mode.*/ ? $& : "NA"'
-l
出力フィールド区切り文字を改行に設定-00
:短絡モード(短絡で記録)-ne code
: 各入力レコードのコード実行- レコード
lock mode
の後に改行以外の文字が複数ある場合は、一致項目($&
)またはNA
その他の項目を印刷します。
基本的に@iruvarのawkソリューション、しかしperl
。