linux - 脚本 - 复制行和第二行如果第二行有字符串

标签 linux bash scripting sed awk

我有一个问题,我有大量文件需要扫描并返回一行及其下一行,但仅限于下一行以字符串开头时。

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

旁注:作为真正的测试,您的输入文件可能应该有一些行,其中 BillJones 不在行的开头...

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/

相关文章:

linux - linux CFS 调度程序如何防止具有非常小的 vruntime 的任务使处理器挨饿?

python - bash 和 $DISPLAY,如何?

bash - 使用超时命令时出错 - 无效的时间间隔

java - IntelliJ IDEA 脚本编写

python - 使用Python自动化使用在线文件转换器

linux - 保持 bash 脚本 while 循环条件从打印到控制台

python - 如何在 linux 中为共享的公司环境部署一个简单的 python 应用程序?

c - 到达一定时间后杀死子进程

bash - 如何获取目录中的所有文件?

asp.net - 通过 jQuery 加载包含内联脚本的 HTML 内容