両方のファイルの代替行のマージ

両方のファイルの代替行のマージ

ファイル1:

.tid.setnr := 1123 
.tid.setnr := 3345 
.tid.setnr := 5431
.tid.setnr := 89323

ファイル2:

.tid.info := 12
.tid.info := 3
.tid.info := 44
.tid.info := 60

結果ファイル:

.tid.info := 12
.tid.setnr := 1123
.tid.info := 3
.tid.setnr := 3345
.tid.info := 44
.tid.setnr := 5431
.tid.info := 60
.tid.setnr := 89323

答え1

使用paste:

paste -d \\n file2 file1

答え2

別のawkソリューション:

awk '{print; getline < "file1"; print}' file2

答え3

これpaste解決策最も携帯性がよく、効率的です。 2つのファイルの行数が異なる場合にその動作を好む場合は、この回避策に言及します。

GNUの使用sed:

sed Rfile1 file2

file1より少ない行がfile2あると、使い果たされるfile1sed何も出力されません( の場合は空行とは反対paste)。

file1より多くの行がある場合、これらの追加行は削除されます(withに対して空白行を印刷するfile2代わりに)。file2paste

$ paste a b
1       a
2       b
3
4
$ paste -d \\n a b
1
a
2
b
3

4

$ sed Rb a
1
a
2
b
3
4
$ sed Ra b
a
1
b
2

答え4

最も簡単な解決策は次のとおりです。

cat file1 >> file2

または

cat file2 >> file1

関連情報