我有一个问题,我有大量文件需要扫描并返回一行及其下一行,但仅限于下一行以字符串开头时。
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/