5

我有两个想要加入的 csv/文本文件。两者都包含相同的第一行。我试图弄清楚如何使用 sed 和 cat 来生成合并文件,但第一行只有一个副本。我正在玩语法。任何帮助将不胜感激:-D!谢谢,安德鲁

4

4 回答 4

4

这将合并文件data1.txtdata2.txt文件merged.txt,从data2.txt. 如果您对它没问题,它会使用 awk:

(cat data1.txt; awk 'NR>1' data2.txt) > merged.txt

awk 将所有行号 > 1 的行从 file 附加data2.txt到 file merged.txt

NR是一个内置的 awk 变量,代表正在处理的文件的当前行号。如果布尔表达式NR > 1为真,则 awk 隐式打印该行。

如果您不关心保持data1.txt完整,您可以附加您的第二个文件(减去它的第一行)并减少到这个:

awk 'NR>1' data2.txt >> data1.txt
于 2012-08-27T02:44:43.130 回答
4

awk 的另一个选项:

awk 'NR==FNR || FNR>1' file1.txt file2.txt .. fileN.txt

这将打印第一个文件中的所有行,或第一行之后的后续文件中的任何行。

于 2012-08-27T03:02:40.210 回答
2

我想说最直接的解决方案是:

( cat file1.txt ; tail -n +2 file2.txt ) > file3.txt

它的优点是清楚地说明你在做什么:打印整个第一个文件,然后打印第二个文件的第一行以外的所有内容,将输出写入第三个文件。

于 2012-08-27T03:29:28.913 回答
1

用一行'1 d'解决意味着删除file2中的第一行

以下命令会将结果附加到 file1

sed '1 d' file2 >> file1
于 2012-08-27T03:28:47.697 回答