我有两个想要加入的 csv/文本文件。两者都包含相同的第一行。我试图弄清楚如何使用 sed 和 cat 来生成合并文件,但第一行只有一个副本。我正在玩语法。任何帮助将不胜感激:-D!谢谢,安德鲁
问问题
1467 次
4 回答
4
这将合并文件data1.txt
和data2.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 回答