grep同一文件中的大量数据

时间:2014-09-27 09:48:25

标签: grep redhat

我想要一个可以匹配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

数,金钱,状态,错误码,ID

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

2 个答案:

答案 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搜索更复杂的示例,但您应该明白这一点。