我有data.txt
个文件。
1 2 3 4 5 6 7
cat data.txt
1 10 100 1100 10.0000 10.1122 60.0000 60.1111
2 11 110 1110 10.1122 10.3333 60.1111 61.3333
3 12 120 1120 10.3333 11.0547 61.3333 61.9999
4 13 130 1130 11.0547 11.1111 61.9999 62.4444
5 14 140 1140 11.1111 10.1122 62.4444 62.8888
6 15 150 1150 10.1122 10.3333 61.3333 61.9999
7 16 160 1160 10.3333 11.1111 60.1111 61.3333
8 17 170 1170 11.0547 11.5555 61.3333 64.1111
9 18 180 1180 10.3333 11.1111 61.3333 61.3333
10 19 190 1190 11.0547 11.5555 60.1111 64.1111
11 20 200 1200 11.1111 10.1122 62.4444 62.8888
我希望从10.1122
中的column 4
到11.1111
顺序查找所有值。值从60.1111
column 6
到61.9999
的{{1}}顺序排列。
' anubhava'和肯特'建议(谢谢!)使用
awk -v col=4 -v start=10.1122 -v end=11.1111 '$col>=start && $col<=end{
print $col}' data.txt | sort -nu
1 10.1122
2 10.3333
3 11.0547
4 11.1111
awk -v col=6 -v start=60.1111 -v end=61.9999 '$col>=start && $col<=end{
print $col}' data.txt | sort -nu
1 60.1111
2 61.3333
3 61.9999
我想在results.txt文件中打印/保存
中的行col4: 10.1122 && col6: 60.1111
col4: 10.3333 && col6: 60.1111
col4: 11.0547 && col6: 60.1111
col4: 10.1122 && col6: 61.3333
col4: 10.3333 && col6: 61.3333
col4: 11.0547 && col6: 61.3333
表示行 - &gt;
2 11 110 1110 10.1122 10.3333 60.1111 61.3333
6 15 150 1150 10.1122 10.3333 61.3333 61.9999
7 16 160 1160 10.3333 11.1111 60.1111 61.3333
8 17 170 1170 11.0547 11.5555 61.3333 64.1111
9 18 180 1180 10.3333 11.1111 61.3333 61.3333
10 19 190 1190 11.0547 11.5555 60.1111 64.1111
有什么建议吗?这就是为什么我期望将awk结果存储在array1和array2中,以便找到col4值和col6值存在的行。
感谢。
答案 0 :(得分:1)
这一行应该:
awk -v f4=10.1122 -v t4=11.1111 -v f6=60.1111 -v t6=61.9999
'$4>=f4&&$4<=t4&&$6>=f6&&$6<=t6' file
结果是:
11 110 1110 10.1122 10.3333 60.1111 61.3333
12 120 1120 10.3333 11.0547 61.3333 61.9999
13 130 1130 11.0547 11.1111 61.9999 62.4444
15 150 1150 10.1122 10.3333 61.3333 61.9999
16 160 1160 10.3333 11.1111 60.1111 61.3333
17 170 1170 11.0547 11.5555 61.3333 64.1111
18 180 1180 10.3333 11.1111 61.3333 61.3333
19 190 1190 11.0547 11.5555 60.1111 64.1111
请注意,根据您定义的条件:以12 and 13
开头的行也应该在输出中。
此外,行号是由您添加的,但不在文件中吗?否则column4将是column5 ...所以我只删除了第一个行号列。