微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

linux-如何将两行合为一体

我在选择指定行并将第二行连接到一行时遇到问题.

我有两个文件

cat lol1.txt
2015-11-15 12:44:34
Name    Value1  Value2
lol1    3   2
lol2    2   5
2015-11-15 12:44:44
Name    Value   Value2
lol1    7   1
lol2    5   1
2015-11-15 12:44:54
Name    Value   Value2
lol1    3   9
lol2    9   2

cat lol2.txt
2015-11-16 10:23:31
Name    Value   Value2
lol1    3   4   
lol2    4   7
2015-11-16 10:23:41
Name    Value   Value2
lol1    7   5
lol2    9   2
2015-11-16 10:23:51
Name    Value   Value2
lol1    2   4   
lol2    2   5

和命令:

cat lol.txt lol2.txt | grep 'lol1\|2015'

返回:

2015-11-15 12:44:34
lol1    3   2
2015-11-15 12:44:44
lol1    7   1
2015-11-15 12:44:54
lol1    3   9
2015-11-16 10:23:31
lol1    3   4   
2015-11-16 10:23:41
lol1    7   5
2015-11-16 10:23:51
lol1    2   4   

现在,我必须将每一行都连接到一起.我的意思是:

2015-11-15 12:44:34 lol1    3   2
2015-11-15 12:44:44 lol1    7   1
2015-11-15 12:44:54 lol1    3   9
2015-11-16 10:23:31 lol1    3   4
2015-11-16 10:23:41 lol1    7   5
2015-11-16 10:23:51 lol1    2   4   

还有一个问题.如何使用日期和时间选择行而不是grep 2015,因为明年日期将从2016年开始,我将不得不更改脚本.

谢谢.

解决方法:

由于您计划使用awk,因此可以保存grep,因此无论如何猫都是无用的.

这个awk单线功能可以完成您的工作.

awk '/^2015/{printf "%s%s",(NR>1?"\n":""),$0}/lol1/{printf " %s",$0}' f1 f2

注意

> f1,f2是您的两个文件.它给出了预期的输出.
>上面的行并不遵循每隔一行的规则,而是按时间戳对lol1数据进行分组,这可能是您的真正要求.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐