![如果结构包含特定字符串,如何从文件中选择特定集或结构?](https://linux22.com/image/47444/%E5%A6%82%E6%9E%9C%E7%BB%93%E6%9E%84%E5%8C%85%E5%90%AB%E7%89%B9%E5%AE%9A%E5%AD%97%E7%AC%A6%E4%B8%B2%EF%BC%8C%E5%A6%82%E4%BD%95%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E9%80%89%E6%8B%A9%E7%89%B9%E5%AE%9A%E9%9B%86%E6%88%96%E7%BB%93%E6%9E%84%EF%BC%9F.png)
我想提取具有特定字符串的集合,例如:
文件abc.txt
包含
abc 123
abcd 1234
abcde 12345
abc 123
abcd 123
abcde 12345
abc 123
abcd 1234
abcde 12345
现在从上面的集合中可以看出,在第二集合中,第二行没有1234
。所以我想要提取的是这些具有此类字符串的集合。
abc 123
abcd 123
abcde 12345
答案1
> awk -v RS=$'\n\n' -v FS=$'\n' -v ORS=$'\n\n' '$2 ~ /123$/ {print}' abc.txt
abc 123
abcd 123
abcde 12345
答案2
它是 GNU 的标准程序sed
sed '/abc 123/{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt
或者
sed '/^$/!{:1;$!{N;/\n$/!b1}};/\babcd 123\b/d' abc.txt
如果您面向空行,而不是abc 123
块中的第一个 ( )