如何用awk实现仅包含X和Y的严格行匹配?
用Awk实现仅包含X和Y字符的行匹配
当然可行,你可以通过组合正则条件实现需求——既要确保行里只包含x和y,又要保证x和y同时存在。
直接用这条命令即可:
awk '!/[^xy]/ && /x/ && /y/' filename.txt
命令解释:
!/[^xy]/:匹配不包含x、y之外任何字符的行([^xy]表示非x/y的字符,!取反)/x/ && /y/:额外确保行里同时存在x和y,避免出现只有x或只有y的行
测试验证:
假设你的文件内容是:
xyz xy yx zyx
执行上述命令后,输出结果正是你想要的:
xy yx
另外也可以用更紧凑的正则写法,直接匹配仅含x和y且两者都存在的行:
awk '/^(x+y+|y+x+)$/' filename.txt
这个正则表示行要么是x开头后跟y,要么是y开头后跟x,同样能达到效果。
内容的提问来源于stack exchange,提问作者Rick Dearman
相关产品推荐
相关产品推荐

