次のスニペットを検討してください。
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
。