Regex AWK:如何匹配逗号
我想从awk返回模式为“C”或“…,C”或“…,C,.*”的行。 例如: 有效的 无效的 我的代码如下:Regex AWK:如何匹配逗号,regex,bash,awk,sed,Regex,Bash,Awk,Sed,我想从awk返回模式为“C”或“…,C”或“…,C,.*”的行。 例如: 有效的 无效的 我的代码如下: echo G,CC | awk '$0 ~ /^C,+.*|.*,C,*.*/ {print $0}' 输出: 我希望它不会给我任何回报。不幸的是,它将“G,CC”返回给我 我如何解决这个问题 编辑: 根据@Emma和@perreal的回答。我使用了一个较短的命令行来解决我的问题: awk '$0 ~ /^C,.*|.*,C,.*|.*,C$/ {print $0}' 到目前为止,它运
echo G,CC | awk '$0 ~ /^C,+.*|.*,C,*.*/ {print $0}'
输出:
我希望它不会给我任何回报。不幸的是,它将“G,CC”返回给我
我如何解决这个问题
编辑:
根据@Emma和@perreal的回答。我使用了一个较短的命令行来解决我的问题:
awk '$0 ~ /^C,.*|.*,C,.*|.*,C$/ {print $0}'
到目前为止,它运行良好。谢谢你的帮助
在+
中是不必要的,因为您已经匹配了逗号,并且还匹配了后面的任何内容^C,+.*
- 在
中,第二个逗号后面的*,C,*.
不正确。它使逗号成为可选的,因此它也可以匹配*
(G,CC
匹配*,
和G,
匹配C,*
)CC
awk '$0 ~ /^[GCA](,[GCA])*$/ && /C/ {print $0}'
在+
中是不必要的,因为您已经匹配了逗号,并且还匹配了后面的任何内容^C,+.*
- 在
中,第二个逗号后面的*,C,*.
不正确。它使逗号成为可选的,因此它也可以匹配*
(G,CC
匹配*,
和G,
匹配C,*
)CC
awk '$0 ~ /^[GCA](,[GCA])*$/ && /C/ {print $0}'
你能试试下面的吗
awk '!/CC/ && /^C,+.*|.*,C,*.*/' Input_file
你能试试下面的吗
awk '!/CC/ && /^C,+.*|.*,C,*.*/' Input_file
我的猜测是,也许这也会起作用:
awk '$0 ~ /^([A-Z],C,[A-Z]|[A-Z],C|C,[A-Z])$/ {print $0}'
忠告
他建议:
它相当于awk'/^([A-Z],C[A-Z]|[A-Z],C[A-Z])$/'。输出 with print是默认操作,同时匹配 记录
我的猜测是,也许这也会起作用:
awk '$0 ~ /^([A-Z],C,[A-Z]|[A-Z],C|C,[A-Z])$/ {print $0}'
忠告
他建议:
它相当于awk'/^([A-Z],C[A-Z]|[A-Z],C[A-Z])$/'。输出 with print是默认操作,同时匹配 记录 更多选择 换句话说,您想选择“C”作为单词的行吗?如果是,这里有两种解决方案:
grep -w C
grep -E '\<C\>'
更多选择
换句话说,您想选择“C”作为单词的行吗?如果是,这里有两种解决方案:
grep -w C
grep -E '\<C\>'
谢谢你的回复。我试过你的密码。它适用于“G,CC”。但它不能与“G,C”匹配。你有什么建议吗?更新了答案请看一下。谢谢你的回复。我试过你的密码。它适用于“G,CC”。但它不能与“G,C”匹配。你有什么建议吗?更新后的答案请看一下。它相当于
awk'/^([a-Z],C[a-Z]|[a-Z],C[a-Z])$/'
。使用print
输出是默认操作,同时匹配完整记录。它相当于awk'/^([A-Z],C[A-Z]|[A-Z],C[A-Z])$/'
。使用print
输出是默认操作,同时匹配完整记录。可能不查看分隔符,而是关注数据,即如果数据不是单个C
则无效<代码>sed'/\bC\b/!d'文件。您最后编辑的*
没有做任何有用的事情(*
表示零或更多,因此零是一个选项),您可以删除它们。$0~
和{print$0}
也一样。这将给您留下awk'/^C,|,C,|,C$/'
,可以将其简化为仅限值。可能不需要查看分隔符,而应该关注数据,即如果它不是单个C
,则它是无效的<代码>sed'/\bC\b/!d'文件。您最后编辑的*
没有做任何有用的事情(*
表示零或更多,因此零是一个选项),您可以删除它们。$0~
和{print$0}
也一样。这就给你留下了awk'/^C,|,C,|,C$/'
,它可以被简化为。好吧,这很短!好吧,那太短了!
awk '"," $0 "," ~ /,C,/ {print}
$ awk '/(^|,)C(,|$)/' file
C,G
G,C
G,C,A