找到PATTERN时合并两个文本文件的行 [英] Merge lines of two text files when PATTERN is found

查看:125
本文介绍了找到PATTERN时合并两个文本文件的行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在寻找awk或sed解决方案以基于匹配的模式组合2个文件,如下所示:在这种情况下,PATTERN是"cat".文件2中的行数将始终等于文件1中的模式匹配数.

I am looking for an awk or sed solution to combine 2 files based on a matched pattern, like so: The PATTERN in this case is "cat". The number of lines in file 2 will always equal the number of pattern matches in file 1.

文件1:

I am a cat  
I am a dog    
I am a dog  
I am a cat  
I am a dog

文件2:

line 1  
line 2

合并文件:

I am a cat  
line 1  
I am a dog  
I am a dog  
I am a cat  
line 2  
I am a dog

推荐答案

尝试使用这种awk的衬纸:

Try this awk one liner:

awk 'NR==FNR{a[NR]=$0;next}1;/cat/{print a[++i]}' file2 file1

测试:

$ cat file1
I am a cat
I am a dog
I am a dog
I am a cat
I am a dog

$ cat file2
line 1
line 2

$ awk 'NR==FNR{a[NR]=$0;next}1;/cat/{print a[++i]}' file2 file1
I am a cat
line 1
I am a dog
I am a dog
I am a cat
line 2
I am a dog

这篇关于找到PATTERN时合并两个文本文件的行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆