Linux 使用grep在线匹配模式
我需要用逗号分隔的值grep文件中的行,并将输出定向到另一个文件。因此,如果第二个值以“U”开头,最后一个值为“Success”,则此行与模式匹配 应符合以下模式:Linux 使用grep在线匹配模式,linux,shell,command-line,grep,Linux,Shell,Command Line,Grep,我需要用逗号分隔的值grep文件中的行,并将输出定向到另一个文件。因此,如果第二个值以“U”开头,最后一个值为“Success”,则此行与模式匹配 应符合以下模式: 324,U63@DOM1,U63@DOM1,C1755,C1755,Kerberos,Network,LogOn,Success 如果不匹配: 456,C1164$@DOM1,C1164$@DOM1,C625,C625,?,Network,LogOff,Success 123,U63@DOM1,C11847$@?,C2109,C2
324,U63@DOM1,U63@DOM1,C1755,C1755,Kerberos,Network,LogOn,Success
如果不匹配:
456,C1164$@DOM1,C1164$@DOM1,C625,C625,?,Network,LogOff,Success
123,U63@DOM1,C11847$@?,C2109,C2109,?,?,TGT,Fail
谢谢大家!
grep '^[^,]*,U.*,Success$'
查找第一个逗号aU
,最后一个逗号,Success
和行尾
查找第一个逗号,a
U
,最后一个逗号,Success
和行尾。随着列匹配要求变得更加复杂,一个awk
解决方案变得更具吸引力:
awk -F, '$2 ~ /^U/ && $(NF) == "Success"'
(匹配的默认操作是打印该行。)
下面是使用grep
的解决方案:
grep '^[^,]*,U.*,Success$'
和sed
:
sed '/^[^,]*,U.*,Success$/ p; d'
随着柱状匹配要求变得更加复杂,
awk
解决方案变得更具吸引力:
awk -F, '$2 ~ /^U/ && $(NF) == "Success"'
(匹配的默认操作是打印该行。)
下面是使用grep
的解决方案:
grep '^[^,]*,U.*,Success$'
和sed
:
sed '/^[^,]*,U.*,Success$/ p; d'
你试过什么?这不是一项用于编写程序的服务,因为您不想这样做。
^[^,]+,U.*Success$
@Natecat:请注意,+
需要grep-E
(又名egrep
)。谢谢@jonathan。这管用!是否必须使用grep
?如果您使用awk
,这似乎会更清晰。您尝试过什么?这不是一项用于编写程序的服务,因为您不想这样做。^[^,]+,U.*Success$
@Natecat:请注意,+
需要grep-E
(又名egrep
)。谢谢@jonathan。这管用!是否必须使用grep
?如果您使用awk
,这似乎会更清晰。