在unix中打印行的部分直到指定的匹配数

时间:2016-01-06 11:00:26

标签: shell unix awk sed grep

我有一个包含

的文件
aORbORcORdORe
1OR2OR3OR4OR5OR6OR7OR8OR10OR11OR
1OR2OR3OR4OR5OR6
1OR2OR3OR4OR5OR
pORcORqOR
1OR2OR3OR4OR5OR6OR7OR
helloORhiORhiORhiORhiORhi
mORtORqORfAND
pORcORqOR

我能够grep包含OR的行并计算出现次数。但现在我想

  1. grep表示该文件中包含5个以上OR的行到另一个名为output.txt的文件。 所以output.txt包含

    1OR2OR3OR4OR5OR6
    1OR2OR3OR4OR5OR
    1OR2OR3OR4OR5OR6OR7OR
    helloORhiORhiORhiORhiORhi
    
  2. 从output.txt,指定3个OR - >它应该显示直到5次出现的行

    1OR2OR3OR4
    1OR2OR3OR4
    1OR2OR3OR4
    helloORhiORhiORhiORhi
    
  3. 来自output.txt,specity 7 ORs - >它应该显示直到7 OR的行

  4. 感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

使用awk

任务1:

awk -F 'OR' 'NF>5' file > output.txt

cat output.txt
1OR2OR3OR4OR5OR6OR7OR8OR10OR11OR
1OR2OR3OR4OR5OR6
1OR2OR3OR4OR5OR
1OR2OR3OR4OR5OR6OR7OR
helloORhiORhiORhiORhiORhi

任务2:

awk 'BEGIN{FS=OFS="OR"} {NF=4}1' output.txt
1OR2OR3OR4
1OR2OR3OR4
1OR2OR3OR4
1OR2OR3OR4
helloORhiORhiORhi