200

5つのファイルの内容をそのまま1つのファイルにコピーしたい。ファイルごとにcpを使ってやってみました。ただし、それは前のファイルからコピーされた内容を上書きします。私も試しました

paste -d "\n" 1.txt 0.txt

そしてそれはうまくいきませんでした。

スクリプトで各テキスト ファイルの末尾に改行を追加する必要があります。

例えば。ファイル 1.txt、2.txt、3.txt。1,2,3の内容を0.txtに入れる

どうすればいいのですか ?

4

12 に答える 12

356

出力ファイルへのcatシェルリダイレクト( )を使用した(連結の略)コマンドが必要です>

cat 1.txt 2.txt 3.txt > 0.txt
于 2013-08-01T23:56:58.783 に答える
15
for i in {1..3}; do cat "$i.txt" >> 0.txt; done

952 個のファイルを 1 つに結合する必要があったため、このページを見つけました。多くのファイルがある場合、これははるかにうまく機能することがわかりました。これは、必要な数だけループを実行し、>> を使用してそれぞれを cat し、0.txt の末尾に追加します。

編集:

コメントで取り上げられたように:

cat {1..3}.txt >> 0.txt

また

cat {0..3}.txt >> all.txt
于 2016-05-20T04:35:43.173 に答える
5

Another option is sed:

sed r 1.txt 2.txt 3.txt > merge.txt 

Or...

sed h 1.txt 2.txt 3.txt > merge.txt 

Or...

sed -n p 1.txt 2.txt 3.txt > merge.txt # -n is mandatory here

Or without redirection ...

sed wmerge.txt 1.txt 2.txt 3.txt

Note that last line write also merge.txt (not wmerge.txt!). You can use w"merge.txt" to avoid confusion with the file name, and -n for silent output.

Of course, you can also shorten the file list with wildcards. For instance, in case of numbered files as in the above examples, you can specify the range with braces in this way:

sed -n w"merge.txt" {1..3}.txt
于 2016-12-12T05:56:18.137 に答える
3

元のファイルに印刷できない文字が含まれている場合、cat コマンドを使用するとそれらの文字は失われます。'cat -v' を使用すると、印刷できない文字列は表示可能な文字列に変換されますが、出力ファイルには元のファイルの実際の印刷できない文字が含まれていません。ファイルの数が少ない場合、別の方法として、非印刷文字を処理するエディター (vim など) で最初のファイルを開くこともできます。次に、ファイルの一番下まで移動して、「:r second_file_name」と入力します。これにより、非印刷文字を含む 2 番目のファイルが取り込まれます。追加のファイルについても同じことができます。すべてのファイルを読み込んだら、「:w」と入力します。最終的な結果として、最初のファイルには、最初に行った内容に加えて、読み込まれたファイルの内容が含まれるようになります。

于 2016-09-22T19:55:37.213 に答える