web-dev-qa-db-ja.com

一部のファイルの最後に欠落している改行を追加して、ファイルをまとめて猫にする方法

私はたくさんの.textファイル、most標準のnlで終わります。

カップルには最後にターミネーターがありません。最後の物理バイトは(通常)英数字です。

cat *.text >| /tmp/joined.textですが、joined.textのいくつかの場所で、ファイルの最初の行が前のファイルの最後の行の終わりにあることに気付きました。前のファイルを調べたところ、行末記号がないことがわかりました-連結について説明しました。

それが問題を提起しました、欠落している改行をそのまま続けて連結する最も簡単な方法は何ですか?これらのオプションはどうですか?

  1. 一部の入力ファイルに空白行を効果的に追加するソリューション。私にとっては、joined.textの処理で処理できるため、問題ありません。
  2. Cr/flをまだ終了していないファイルにのみ追加するソリューション。
8
HiTechHiTouch

必要に応じて改行を追加できる別のコマンドはawkです。

awk 1 ./*.txt

ここでの1は、awkで真の条件を取得する最も簡単な方法です。真の条件に対するawkのデフォルトのアクションは入力行を出力することなので、この目的のために機能します。

12
muru

GNU cutのようないくつかのcut実装では、次のことができます:

cut -b 1- ./*.text > output

欠落している場合、欠落している改行が追加されるため。

4

この便利なPerlワンライナーは、まだそこにない場合にのみ、欠落している改行を追加することができます。

Perl -lpe '' ./*.text > output
3
Rakesh Sharma

頭に浮かぶ最初のアプローチは、ファイルをループして、改行を追加してその内容を出力することです。

_for f in *text; do
    printf '%s\n' "$(cat < "$f")"
done > /tmp/joined.text
_

$()は既存の改行文字を削除するため、各ファイルの末尾に_\n_が1つだけ存在します。

1
terdon