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
末尾の改行文字を削除したいことが確実な場合は、head
GNU coreutils を使用して最後のバイトを除くすべてを選択できます。これは非常に高速です。
head -c -1 log.txt
cat
また、完全性を保つために、 と「すべて表示」フラグを使用して、ファイル内の改行文字 (またはその他の特殊文字) がどこにあるかをすばやく確認できます-A
。ドル記号文字は各行の終わりを示します。
cat -A log.txt