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