我有一个问题,我有大量文件需要扫描并返回一行及其下一行,但仅当下一行以字符串开头时才需要。
String one - line one must begin with 'Bill'
String two - line two must begin with 'Jones'.
如果这两个条件匹配,则返回两行。重复整个文件。
即。原始文件:
Edith Blue
Edith Green
Edith Red
Bill Blue
Jones Red
Edith Green
Bill Green
Edith Red
Jones Green
Bill Blue
我希望它只返回:
Bill Blue
Jones Red
有任何想法吗?不知道从哪里开始,我只具有sed/awk等的基本脚本编写技能。此刻,我正在使用它来获取文件名及其下一行,但这给了我太多无用的信息与其他sed命令剥离。
grep -A 1 "^Bill" * > test.txt
我想有一种更优雅的方法来只获取我需要的线条。任何帮助将是可爱的!
最佳答案
作为初始方法的扩展,一种简单的解决方案是grep以“Bill”开头的行在之后返回,然后查找以“Jones”开头的行在之前返回...。
grep -A1 "^Bill" myfile.txt | grep "^Jones" -B1
输出:
Bill Blue
Jones Red
旁注:作为真正的测试,您的输入文件可能应该包含一些行,其中
Bill
和Jones
不在行的开头...Edith Blue
Edith Jones
Edith Red
Bill Blue
Jones Red
Edith Bill
Bill Jones
Edith Red
Jones Green
Bill Blue
关于linux - 脚本-如果第二行包含字符串,则复制第二行,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19453226/