我有300个文件,包含以下格式:
0 0 261157 0 13267 0 314 0 274738 736485 999.999756
1 0 261155 0 13269 0 314 0 274738 736625 1000.147705
2 0 261162 0 13264 0 312 0 274738 736703 1000.104370
3 0 261156 0 13265 0 312 0 274733 736838 1000.113708
4 0 261166 0 13261 0 311 0 274738 736918 999.999756
5 0 261173 0 13258 0 311 0 274742 737054 1000.001892
6 0 261153 0 13284 0 311 0 274748 737137 1000.204529
7 0 261152 0 13280 0 312 0 274744 736800 1000.188110
8 0 261154 0 13277 0 311 0 274742 737081 1000.107178
9 0 261150 0 13278 0 310 0 274738 737309 1000.189392
10 2348 260942 0 13271 0 310 2348 274523 737683 1001.341980
11 2342 260915 0 13264 0 310 2342 274489 737720 1000.341797
12 2340 260900 0 13272 0 310 2340 274482 738490 1000.266357
13 2339 260885 0 13284 0 309 2339 274478 738363 1000.312317
这是我文件的一部分示例。行数可以在1000到50000之间,具体取决于文件。
现在,我需要检查最后一行的第二列和倒数第二列。如果这些数字的总和小于10,这意味着我的数据有问题。
我知道如何用“尾巴”打印最后一行,但我从未试图提取数字,将它们相加并与数字进行比较,以确定它是否更小或更大。
感谢。
答案 0 :(得分:1)
使用tail
提取最后一行并将其提供给awk
:
$ tail -n 1 file | awk '$2 + $(NF-1) < 10 {print "Wrong"}'
如果您的文件有很多行,速度会更快。
答案 1 :(得分:0)
awk 'END{x=($2+$(NF-1));if(x<10) print "Wrong";else print "correct"}' test
correct
使用的样本数据:
cat test
0 0 261157 0 13267 0 314 0 274738 736485 999.999756
1 0 261155 0 13269 0 314 0 274738 736625 1000.147705
2 0 261162 0 13264 0 312 0 274738 736703 1000.104370
3 0 261156 0 13265 0 312 0 274733 736838 1000.113708
4 0 261166 0 13261 0 311 0 274738 736918 999.999756
5 0 261173 0 13258 0 311 0 274742 737054 1000.001892
6 0 261153 0 13284 0 311 0 274748 737137 1000.204529
7 0 261152 0 13280 0 312 0 274744 736800 1000.188110
8 0 261154 0 13277 0 311 0 274742 737081 1000.107178
9 0 261150 0 13278 0 310 0 274738 737309 1000.189392
10 2348 260942 0 13271 0 310 2348 274523 737683 1001.341980
11 2342 260915 0 13264 0 310 2342 274489 737720 1000.341797
12 2340 260900 0 13272 0 310 2340 274482 738490 1000.266357
13 2339 260885 0 13284 0 309 2339 274478 738363 1000.312317