0

我在这里有时间使用我的语法:我有 3 个包含各种内容的文件 file1 file2 file3(100 多行)。我正在尝试将它们合并在一起,但只应合并每个文件的第一行。重点是使用一行 bash 代码: sed -n 1p file1 file2 file3仅返回 file1 的第一行

4

4 回答 4

6

你可能想试试 head -n1 -q file1 file2 file3

于 2013-03-20T16:45:13.590 回答
2

不清楚合并是指连接还是加入?

通过awk加入(并排打印的文件中的每一行)

$ awk 'FNR==1{printf "%s ",$0}'  file1 file2 file3
1 2 3

通过awk连接(文件中的每一行一个接一个地打印)

$ awk 'FNR==1'  file1 file2 file3
1
2
3
于 2013-03-20T16:46:43.233 回答
2

我建议您head按照themel的回答中的说明使用。但是,如果您坚持使用sed,则不能简单地将所有文件传递给它,因为它们是隐式连接的,并且您会丢失有关每个文件中第一行内容的信息。所以,如果你真的想在 sed 中做,你需要 bash 来帮助你:

for f in file1 file2 file3; do sed -n 1p "$f"; done
于 2013-03-20T16:51:31.507 回答
1

您可以使用read内置命令避免调用外部进程:

for f in file1 file2 file3; do read l < $f; echo "$l"; done > merged.txt
于 2013-03-20T19:20:54.233 回答