web-dev-qa-db-ja.com

grep出力を1行に保ちますか?

皆さんに本当に簡単な質問があります。ここのドキュメントとサイトを調べた後、grepが各一致を同じ行に出力しないようにすることができるかどうか疑問に思いました。

私の例では、_\xeb\x1a\x5e\x31\xc0\x88\x46\x07..._などの形式の文字列を取得する必要があります。grep -oP "x\K(\S\S)")を使用して各16進数を取得します。

出力は正しいですが、各一致は独自の行にあります。この出力を別のプログラムにフィードする必要があるため、これは問題です。繰り返しになりますが、パディングを一切行わずに各試合を連続して行う方法はありますか?

4
btf1998

出力をtrにパイプすることができます。

grep -oP "x\K(\S\S)") | tr -d '\n'

これには追加のプロセスが必要です。つまり、プログラムが遅くなります。これが問題である場合は、sedまたはawkを使用できます。

4
pfnuesel

sedにフィードしてすべての改行文字を削除すると機能しますか(\n)?

echo \xeb\x1a\x5e\x31\xc0\x88\x46\x07 | grep -oP "x\K(\S\S)" | sed ':a;N;$!ba;s/\n//g'

参照: sedを使用して改行(\ n)を置き換えるにはどうすればよいですか?

0
Kenneth L