合并两个文件,第一个文件的第一行,然后是第二个文件的第一行

合并两个文件,第一个文件的第一行,然后是第二个文件的第一行

我有两个文件:

f1:                                      f2:
==============                         ===============
some text line 1                       A1
some text line 2                       A2
some text line 3                       A3

我可以快速合并这两个文件以生成 f3:

some text line 1
A1
some text line 2
A2
some text line 3 
A3

答案1

这是一份工作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

答案2

是的,您可以使用一个 while 循环来完成此操作,并使用read.

#!/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 如果您正在处理的文件不是很大,也许上面的方法比大多数解决方案更容易、更便携。

答案3

POSIX awk;这适用于任意数量的文件,并且文件甚至不必具有相同数量的行。该脚本将继续运行,直到所有文件都超出行数:

BEGIN {
  do {
    br = ch = 0
    while (++ch < ARGC)
      if (getline < ARGV[ch]) {
        print
        br = 1
      }
  } while (br)
}

相关内容