複数のファイルのデータを単一のファイルに追加するには?

複数のファイルのデータを単一のファイルに追加するには?

例:ファイルがあり、01.txtこの02.txtファイルのデータを新しいファイルに追加する必要がありますnew.txt

01.txt後ろのファイルに基づいてデータを追加する必要があります02.txt

以前は、ファイル(01.txt 02.txt)の最初の行と最後の行のみを削除してから、新しいファイルに追加する必要がありました。

UNIXを使用してこれを達成するにはどうすればよいですか?

答え1

別の方法:

for file in 01.txt 02.txt; do sed '1d;$d;' "$f"; done > output

これは、多くのファイルをリンクする必要がある場合に特に便利です。

for file in *.txt; do ...

シェル拡張を使用することもできます。

for file in 0{1,2}.txt; do ...

答え2

sed を使用して最初の行と最後の行を削除できます。

sed -e '1d' -e '$d' file1 > output
sed -e '1d' -e '$d' file2 >> output
sed -e '1d' -e '$d' file3 >> output

答え3

ファイルの最初の行を除くすべての内容を印刷する簡単な方法は次のとおりです。tail:

tail -n +2 01.txt

ファイルの最後の行を除くすべての内容を印刷するには、次のようにします。head:

head -n -1 01.txt

したがって、これらすべてを1つにまとめて、最初の行と最後の行を除くすべての項目を印刷して01.txt別の02.txt名前で保存するには、次のように03.txtします。サブシェル上記のコマンドの出力を2つのファイルにマージします。

(tail -n +2 01.txt | head -n -1; tail -n +2 02.txt | head -n -1) > new.txt

答え4

GNUの使用sed:

sed -s '1d;$d' ./*.txt > output

*.txt注:出力ファイルの名前がワイルドカードパターン(上記)と一致しないことを確認します。それ以外の場合は、次のように書く必要があります。

sed -sn '1d;$d;w output.txt' ./*.txt

output.txt以前は存在しなかったと仮定)。

関連情報