使用grep

时间:2016-07-01 00:05:02

标签: 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,C2109,?,?,TGT,Fail

谢谢!

2 个答案:

答案 0 :(得分:1)

grep '^[^,]*,U.*,Success$'

查找第一个逗号,U,最后一个逗号,Success和行尾。

答案 1 :(得分:1)

随着柱状匹配要求变得更加复杂,awk解决方案变得更具吸引力:

awk -F, '$2 ~ /^U/ && $(NF) == "Success"'

(匹配的默认操作是打印该行。)

以下是使用grep的解决方案:

grep '^[^,]*,U.*,Success$'

sed

sed '/^[^,]*,U.*,Success$/ p; d'