需求
一个相对格式化的文本文件,找到匹配的关键字,同时匹配离它最近的另外一个关键字所在行并打印
awk简单测试了满足需求
关键点:
- 相对格式化的文本文件
- “关联”查找关键字
- 临时固定需求,不强调扩展性(没必要撸一个很重的脚本)
测试
测试文件test_data
1 | Color=red,link=jd |
测试1:查找离关键字ccc最近(向上)的Color=所在行并打印
1 | localhost ~ # awk '/Color=/{ line=$0; found=0 } /ccc/ && !found { print line; found=1 }' test_data |
测试2:查找离关键字aaa最近(向上)的Color=所在行并打印
1 | localhost ~ # awk '/Color=/{ line=$0; found=0 } /aaa/ && !found { print line; found=1 }' test_data |
简单解读:
- /Color=/{ line=$0; found=0 }
查找到Color=后,其所在行内容保存到变量line,同时found设置为0
- /aaa/ && !found
/aaa/ 查找到aaa
&& 并且
!found 为真(即found为假,!取反),found必须为0
{ print line; found=1 } 打印line变量的内容,found设置为1,即只匹配第一次aaa