我有时间与我的语法在这里: 我有3个文件与各种内容file1 file2 file3(100 +行)。我试图将它们合并在一起,但只有每个文件的第一行应该合并。问题的关键是使用的bash的一行代码就做:你可能想尝试 head -n1 -q file1 file2 file3
的文件1Unix:一行bash命令将3个文件合并在一起。只提取每个的第一行
回答
只有 sed -n 1p file1 file2 file3
回到第一线。
尽管这是最好的办法,但我认为OP会特别要求'sed'。 – bitmask 2013-03-20 16:46:29
@bitmask:这不是我正在阅读的问题。我认为OP在询问“如何使用一行bash代码”,而“sed”只是一个例子。我可能是错的。 – NPE 2013-03-20 16:47:12
很酷谢谢。你们真棒 – user2180912 2013-03-20 18:00:55
如果通过合并表示连接或连接,尚不清楚。
在awk
通过接合(在印刷并排的文件中的每个第一行):通过连接(在印刷了一个又一个的文件中的每个第一行)
$ awk 'FNR==1{printf "%s ",$0}' file1 file2 file3
1 2 3
在awk
:
$ awk 'FNR==1' file1 file2 file3
1
2
3
很酷谢谢。你们真棒 – user2180912 2013-03-20 17:01:44
@ user2180912你应该接受哪个答案对你最有帮助。您可以通过点击答案旁边的勾号来做到这一点。 – 2013-03-20 17:04:14
sudo_O FNR部分在awk行中代表什么? – user2180912 2013-03-20 18:03:41
我建议你使用head
,正如themel的解释所解释的那样。但是,如果您坚持使用sed
,则不能简单地将所有文件传递给它,因为它们是隐式连接的,并且分别丢失了每个文件中第一行的内容。所以,如果你真的想这样做的SED,您需要的bash来帮助你:
for f in file1 file2 file3; do sed -n 1p "$f"; done
很酷谢谢。你们真棒 – user2180912 2013-03-20 17:01:07
你能避免使用read
内置命令调用外部程序:
for f in file1 file2 file3; do read l < $f; echo "$l"; done > merged.txt
- 1. 只运行多个内联命令的第一个Bash命令
- 2. bash命令只执行第一次就
- 3. 脚本只执行第一个命令
- 4. 只有第一个命令执行
- 5. 将3次2列一次合并成一个只有一个命令
- 6. 在bash中每天提取一个文件的行
- 7. 删除每个文件的第一行后合并CSV文件
- 8. 命令行在一个目录中合并多个文件?
- 9. 要提取的第一个字中的每一行,并将它们保存在一个输出文件
- 10. Unix/bash:读取文件列表并将它们合并到一个文件
- 11. Unix命令将文件的最后一行复制到另一个文件
- 12. 如何使用其中一个UNIX命令获得第一行?
- 13. 把每个交替行中使用一些Unix一列命令
- 14. 检查一个文件是否每行有3个字unix
- 15. 执行第一个命令后,我将如何执行另一个SELECT命令?
- 16. 如何在Unix bash中将两个文件合并成一个文件?
- 17. Java:读取每行只有第一个字的.csv文件
- 18. bash在每个目录递归执行一个命令
- 19. 使用bash读取一个文件,然后从单词执行命令提取
- 20. 如何将两个命令合并到一个unix下?
- 21. 将3个函数合并在一起
- 22. 运行命令,提取一个字段,运行一个结果命令
- 23. 一次执行多个unix命令
- 24. 一次获取第一行,并将每个值放入
- 25. 构建RPM规范文件进行一个文件,并执行一个命令
- 26. 执行一个命令行.exe文件
- 27. Unix外壳:让每一个文件的标题在一行
- 28. 如何只读取CSV文件每一行的第一列
- 29. 在每个线击迭代和运行利用每一行的第一个字和第二字的命令
- 30. 使用awk命令从文件中提取第一行
几乎没有如果使用Gnu sed; 'sed -ns'1p'file {1,2,3}' – potong 2013-03-21 09:14:52