「200 OK」を複数回印刷するファイルがあります。私は「COMMAND」モードの後に現れる最後の「200 OK」にのみ興味があります。私の特定のファイルでは、「COMMAND」が100回印刷されました。次のようになります。
otherdata
200 OK
otherdata
200 OK
COMMAND
200 OK
だから命令を使用します。
grep -A1 COMMAND file | grep -v '200 OK'
これにより、次のような結果が得られます。
COMMAND xxxxx PASSWORD xxxxxx
--
COMMAND xxxxx PASSWORD xxxxxx
513 unknown user account
--
COMMAND xxxxxx PASSWORD xxxxxx
--
COMMAND xxxxxx PASSWORD xxxxxx
513 unknown user account
--
COMMAND xxxxxx PASSWORD xxxxxxx
--
私は200 OKを除くすべてを手に入れましたが、以下を含む行は必要ありません。
COMMAND xxxxx PASSWORD xxxxx
---
200 OK以外の行とその上の行だけを出力するにはどうすればよいですか?理想的には、出力にこのような行だけを含め、他の行を含めないようにしてください。 513は1つの例にすぎず、他の場合もあります。
COMMAND xxxxx PASSWORD xxxxxx
513 user account unknown
ベストアンサー1
あなたはこれを行うことができますsed
:
sed -n -e '/COMMAND/{N;/200/! p;}' file
デフォルトでは、これは-n
1行を印刷しないために使用され、1行が一致する場合はその行をCOMMAND
次の行に関連付けます(N
そうでない場合は200
結合行を印刷します)。