file1
看起来像
# dsd
# dsd
1,2,5
2,3,5
1,2,5
2,3,5
3,4,5
3,4,5
file2
看起来像
# s
1,2
1,2
我想把它们合并
# dsd
# dsd
1,2,5,1,2
2,3,5,1,2
1,2,5,,
2,3,5,,
3,4,5,,
3,4,5,,
也就是说,我想保留第一个文件中的注解行#
在注解行之后,我想粘贴第二个文件中的列,将它们填充到第一个文件的列长度。如果第二个文件中有任何注解行,忽略它们。
我开始说:
paste $(grep -v '^#' file1) file2
但我得到bash: /usr/bin/paste: Argument list too long
我猜这将是一个工作awk
,但我只熟悉单文件处理,我只找到了处理相同长度的文件的例子。有没有一个简单的方法或需要去更长的bash
脚本或python
等。?
4条答案
按热度按时间qrjkbowd1#
您可以使用此
awk
解决方案:bqjvbblv2#
使用任何awk:
rxztt3cl3#
使用强大的Miller、paste、cat和grep,您可以运行
得到
步骤:
paste
和grep
);mlr
);grep
和cat
)yyyllmsg4#
下面是一个带有CSV模块的Ruby:
这不限于
file2
仅为2列的假设。它确实假设
file1
是两个文件中较长的一个。如果不是这样,很容易改变。图纸: