我有一个数据文件,其中包含这样的数字列表:
5 5
6 6
4 4
3 3
4 4
3 3
2 2
我希望挑选出具有数字< = 3的两个列的第一行,然后删除所有行。因此,我的结果文件将是:
5 5
6 6
4 4
3 3
有人知道如何使用尴尬/sed吗?
这是一个尴尬解决方案:
$ 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
考虑以下 sed 方法:
sed -n '1,/[0-3] [0-3]/p' file
输出:
5 5
6 6
4 4
3 3
1,/[0-3] [0-3]
-从第一行开始,并捕获线直到遇到2个数字,而少于3
(包括(。
指定一个地址范围,两个地址由逗号分隔 (,(。地址可以是数字,正则表达式,也可以是两者的混合。
对于Python,在满足您的条件时打印每一行,然后脱离循环:
>>> 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
这是一个尴尬解决方案:
$ awk 'BEGIN {flag=0} flag==0 {print ; flag=$1<=3 && $1<=3}' somefile.txt
5 5
6 6
4 4
3 3