我有一个TXT文件,用这种方式有1200个条目(顺便说一下IPERF输出)

1  [  4]  0.0- 1.0 sec  10.6 MBytes  89.1 Mbits/sec
2  [  4]  1.0- 2.0 sec  13.5 MBytes   113 Mbits/sec
3  [  4]  2.0- 3.0 sec  9.50 MBytes  79.7 Mbits/sec
4  [  4]  3.0- 4.0 sec  9.00 MBytes  75.5 Mbits/sec

如何使用grep只获取以mbits/sec表示的第二个值?
输出示例:
89.1
113
79.7
75.5

最佳答案

awk '{print $9}' your-file.txt

会为你做的。例如:
$ cat ~/test.txt
1  [  4]  0.0- 1.0 sec  10.6 MBytes  89.1 Mbits/sec
2  [  4]  1.0- 2.0 sec  13.5 MBytes   113 Mbits/sec
3  [  4]  2.0- 3.0 sec  9.50 MBytes  79.7 Mbits/sec
4  [  4]  3.0- 4.0 sec  9.00 MBytes  75.5 Mbits/sec

$ awk '{print $9}' ~/test.txt
89.1
113
79.7
75.5

另一种解决方法是:
 awk -F 'MBytes' '{print $2}' test.txt | awk -F 'Mbits' '{print $1}' | tr -d " "

在上述方法中,我们是:
将每行拆分为MB。
这给了我们2个部分:$1是mbytes之前的所有内容。每兆字节2美元
我们选择mbytes之后的所有内容,并按mbits进一步拆分
这又给了我们两个部分,我们在mbits之前选择所有东西
如果数字前后有空格,我们使用tr来删除空格
所以我们得到
$ cat test.txt
1  [  4]  0.0- 1.0 sec  10.6 MBytes  89.1 Mbits/sec
2  [  4]  1.0- 2.0 sec  13.5 MBytes   113 Mbits/sec
3  [  4]  2.0- 3.0 sec  9.50   MBytes  79.7 Mbits/sec
4  [  4]  3.0- 4.0 sec  9.00 MBytes    75.5 Mbits/sec

awk -F 'MBytes' '{print $2}' test.txt | awk -F 'Mbits' '{print $1}' | tr -d " "

Result:
89.1
113
79.7
75.5

关于regex - txt文件中一列的GREP值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32994203/

10-11 15:09