末尾の改行なしでgrep出力を作成する

末尾の改行なしでgrep出力を作成する

次のスニペットを検討してください。

X=$(grep -m1 'some-pattern' some-file | sed -n 's/.* //p')

いくつかのパターン条件が任意のテキストファイルの行と一致する場合は、最後の単語を変数に入れたいと思います。

私の問題は、ソースファイルに応じて変数のX末尾にCR、LF、またはCRLFがあります。
私も次のことを試しました。

X=$(grep -m1 'some-pattern' some-file | sed -n 's/.* \([A-Za-z]\+\)/\1/p')

したがって、予想されるsed出力は制限されていますが、[A-Za-z]+X変数の内部にはまだ不快なバイトがあります。

最後にどのバイトがあるのか​​を調べるのと同様の複雑な問題をチェックするxxdなど、あまりにも多くのコードを使用せずにどのようにそれを削除できますか?cut

ベストアンサー1

または、末尾から改行文字を削除しますが、プログラムでこれを行うにはを使用します``$()tr

grep -m1 'some-pattern' some-file | sed -n 's/.* //p' | tr -d '\012\015'

これにより、文字列からキャリッジリターンおよび/または改行が削除されます。

問題はあなたがどのように出力結果。たとえば、デフォルトではecho改行文字が追加されます。echo -nまたはを使用することもできますprintf

おすすめ記事