ファイルを1つにまとめる方法、一部のファイルの末尾に行方不明の改行を追加する

ファイルを1つにまとめる方法、一部のファイルの末尾に行方不明の改行を追加する

ファイルがたくさんありますが.text最大標準nlで終わります。

夫婦には最後に仕上げ者がいません。最後の物理バイトは(通常)英数字です。

を使用していましたがcat *.text >| /tmp/joined.text、Join.textのいくつかの場所でファイルの最初の行が前のファイルの最後の行の末尾に表示されることがわかりました。前のファイルを確認してみたところ、接続を説明する行終端がないことを確認しました。

これは、行方不明の改行文字をリンクする最も簡単な方法が何であるかについて質問します。このオプションはどうですか?

  1. 特定の入力ファイルに空行を効率的に追加するソリューションです。私にとっては、Join.textの処理がこれを処理できるので、これは問題ではありません。
  2. 解決策は、このように終わらないファイルにcr / flを追加することです。

答え1

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

awk 1 ./*.txt

ここで、1はawkからtrue条件を取得する最も簡単な方法であり、true条件に対するawkのデフォルトの動作は入力行を印刷することであるため、この目的に使用できます。

答え2

cutGNUなどのいくつかの実装では、cut次のことができます。

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

行方不明の場合は、行方不明の改行を追加するためです。

答え3

この便利なPerl 1行の行は、欠落している改行を追加することを行います(対応する改行がまだ存在していない場合のみ)。

perl -lpe '' ./*.text > output

答え4

私の心に浮かんだ最初のアプローチは、ファイルを繰り返し、改行が追加された内容を印刷することでした。

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

これにより、すでに存在する改行文字がすべて削除され、各ファイルの末尾に改行文字が1つだけ$()生成されます。\n

関連情報