【发布时间】:2017-12-03 18:37:45
【问题描述】:
我正在尝试从我的输入文件中提取某些行:
2.txt
1 10 11 A L X3 -1.1
1 10 11 A L X3 -21.1
1 10 11 A L X1 1.1
1 13 21 A T X3 -2.1
3 11 12 A T X2 -3.1
3 11 12 K T X2 7.1
4 11 12 A T X7 -8.1
4 11 12 C T X7 -8.1
4 11 12 C T X7 11.1
4 11 12 C T X7 -11.1
4 11 12 C T X1 -11.1
4 11 12 C T X7 41.1
我正在尝试提取共享前 5 列的行,但在后两列以及其他不共享前 5 列的行中有所不同。
然后,我想将具有最高绝对值的行保留在最后一列。 我有一个 awk 代码来获取属于glenn jackman 的最小值的行,并且我尝试改进他的解决方案以提取具有更高绝对值的行,但是它不起作用。
我的预期输出是:
1 10 11 A L X3 21.1
1 10 11 A L X1 1.1
3 11 12 A T X2 3.1
3 11 12 K T X2 7.1
4 11 12 A T X7 8.1
4 11 12 C T X7 41.1
我的试用 awk 是:
awk ' {key = $1 FS $2 FS $3 FS $4 FS $5} !(key in abs) || $NF < abs[sqrt(key^2)] {abs[key] = $NF; line[key] = $0} END {for (key in line) print line[key]}' 2.txt | sort
它输出负数最小的行,负数(不是应该的正数),并且不打印最大正数:
1 10 11 A L X3 -21.1
1 13 21 A T X3 -2.1
3 11 12 A T X2 -3.1
3 11 12 K T X2 7.1
4 11 12 A T X7 -8.1
4 11 12 C T X1 -11.1
感谢您的帮助!
【问题讨论】: