删除特定字符串后的行大于值(bash或python)

时间:2017-04-21 09:28:15

标签: python bash awk sed

我有一个包含数字列表的数据文件:

5 5
6 6
4 4
3 3
4 4
3 3
2 2

我希望选出具有数字< = 3的两列的第一行,然后删除所有行。因此我的结果文件只是:

5 5 
6 6
4 4 
3 3

有人知道如何使用awk / sed吗?

3 个答案:

答案 0 :(得分:1)

请考虑以下 sed 方法:

sed -n '1,/[0-3] [0-3]/p' file

输出:

5 5    
6 6    
4 4    
3 3

1,/[0-3] [0-3] - 从第一行开始的地址范围,捕获行直到遇到小于或等于3(包含)的2位数。

  

指定地址范围时,两个地址用逗号分隔   (,)。地址可以是数字,正则表达式,也可以是两者的混合。

答案 1 :(得分:1)

这是一个awk解决方案:

$ awk '1; $1<=3&&$2<=3{exit}' file
5 5
6 6
4 4
3 3

说明:

awk '
1;                           # output record
$1 <= 3 && $2 <= 3 { exit }  # if it was as requested, exit
' file

答案 2 :(得分:0)

对于Python,打印每一行,并在符合条件时突然退出循环:

<ul>
                <li v-for="cit in possable">
                    <label>
                    <input  
                        type="checkbox"
                        :checked="savedcbx.indexOf(+cit.id)>-1"
                        :value="cit.id"/>
                    {{cit.rname}}
                    </label>
                </li>
            </ul>

这是一个AWK解决方案:

>>> while open('somefile.txt') as f:
        for line in f:
            print(line, end='')
            p, q = map(int, line.split())
            if p <= 3 or q <= 3:
                break


5 5
6 6
4 4
3 3