私は2つのファイルを持っています:
f1: f2:
============== ===============
some text line 1 A1
some text line 2 A2
some text line 3 A3
これらの2つのファイルをすばやくマージしてf3を作成できますか?
some text line 1
A1
some text line 2
A2
some text line 3
A3
paste
の仕事です:
paste -d'\n' f1.txt f2.txt
例:
$ cat foo.txt
some text line 1
some text line 2
some text line 3
$ cat bar.txt
A1
A2
A3
$ paste -d'\n' foo.txt bar.txt
some text line 1
A1
some text line 2
A2
some text line 3
A3
はい、1つのwhileループを使用してこれを実行し、read
を使用して2つのファイルを読み取ることができます。
#!/bin/sh
while read file1 <&3 && read file2 <&4
do
printf "%s\n" "$file1" >> mergedFile.txt
printf "%s\n" "$file2" >> mergedFile.txt
done 3</path/to/file1/file1.txt 4</path/to/file2/file2.txt
echo
の代わりにprintf
を使用できます。結果はmergedFile.txtにあります。処理しているファイルが大きくない場合、おそらく上記はほとんどのソリューションよりも簡単で移植性があります。
POSIX Awk;これは任意の量のファイルで機能し、ファイルは同じ量の行である必要はありません。スクリプトは、すべてのファイルが行からなくなるまで続行します。
BEGIN {
do {
br = ch = 0
while (++ch < ARGC)
if (getline < ARGV[ch]) {
print
br = 1
}
} while (br)
}