我想要一个可以匹配Red Hat中所有以下条件的命令:
·number range between 0100xxxx to 0110xxxxx
·And have money over 300
·Status either X or Z
·id contains letter ‘a’
·Error_code starting with 2
010018739,13213,X,300,abcde
010523456,343,Z,500,xcvfe
010743576,563,X,201,fgsa
012095654,300,X,400,gcaz
019432343,300,X,402,dewa
011023324,200,X,206,dea
020023433,100,X,303,a
010832134,300,X,200,a
012244242,433,Z,204,ghfsa
答案 0 :(得分:2)
这样的事情:
awk -F, '($1>=1000000 && $1<11099999) && $2>300 && ($3 ~ "X" || $3 ~ "Z") && index($5,"a") && index($4,"2")==1' file
它不满足小写状态(但你没有要求),也不满足状态或错误代码前面的空格(但你没有要求那个)。
答案 1 :(得分:0)
grep
仅匹配文字,awk
更灵活,更适合您的情况。例如:
awk 'BEGIN {FS=","} $2 > 300 {print;}' < yourfile
基本上这是说','
是字段分隔符,然后对于第二个字段($2
)为> 300
的每一行,该操作(在这种情况下只是{{} 1}}整行,甚至可以省略IIRC)。
您可以根据自己的喜好使用复杂的条件,语法与C类似。我建议您阅读print
并使用Google搜索更复杂的示例,但您应该明白这一点。