如何在不使用 cat 或 sed 的情况下将两个文本文件合并为一个文件

如何在不使用 cat 或 sed 的情况下将两个文本文件合并为一个文件

我有两个文件

文件1:

a
b
c

文件2:

1
2
3

现在我需要将它们合并到一个 csv 文件中

a;1
b;2
c;3

由于文件确实很大,我宁愿不使用catsed处理第二个文件。 (对于较小的文件,我可以使用脚本)。任何想法 ?awk/ perl?

答案1

尝试paste命令 :

paste -d';' File1 File2 > File3

答案2

#!/usr/bin/awk -f
{
  w[FNR][FILENAME] = $0
}
END {
  for (x in w)
    print w[x][ARGV[1]] ";" w[x][ARGV[2]]
}

我也想出了这个,但由于 Awk 迭代数组的方式而失败:

#!/usr/bin/awk -f
{
  w[FNR][FILENAME] = $0
}
END {
  for (x in w) {
    y = 0
    for (z in w[x]) {
      printf w[x][z]
      printf y ? "\n" : ";"
      y = 1
    }
  }
}

相关内容