Bash: 出力から末尾の改行を取り除く 質問する

Bash: 出力から末尾の改行を取り除く 質問する

Bash でコマンドを実行すると (具体的にはwc -l < log.txt)、出力の後に改行が含まれます。これを取り除くにはどうすればよいでしょうか?

ベストアンサー1

期待される出力が 1 行である場合はtr、出力からすべての改行文字を削除するだけです。ユーティリティにパイプしたり、必要に応じて Perl にパイプしたりすることも珍しくありません。

wc -l < log.txt | tr -d '\n'

wc -l < log.txt | perl -pe 'chomp'

コマンド置換を使用して末尾の改行を削除することもできます。

echo -n "$(wc -l < log.txt)"

printf "%s" "$(wc -l < log.txt)"

予想される出力に複数の行が含まれる可能性がある場合は、別の決定を行う必要があります。

ファイルの末尾から複数の改行文字を削除する場合は、再度 cmd 置換を使用します。

printf "%s" "$(< log.txt)"

ファイルから最後の改行文字を厳密に削除したい場合は、Perl を使用します。

perl -pe 'chomp if eof' log.txt

末尾の改行文字を削除したいことが確実な場合は、headGNU coreutils を使用して最後のバイトを除くすべてを選択できます。これは非常に高速です。

head -c -1 log.txt

catまた、完全性を保つために、 と「すべて表示」フラグを使用して、ファイル内の改行文字 (またはその他の特殊文字) がどこにあるかをすばやく確認できます-A。ドル記号文字は各行の終わりを示します。

cat -A log.txt

おすすめ記事