来自txt文件中的列的GREP值

时间:2015-10-07 13:57:09

标签: regex linux grep

我有一个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以 ONLY ?

输出示例:

89.1
113
79.7
75.5

2 个答案:

答案 0 :(得分:3)

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 " "

在上面的方法中我们是:

  • 按MBytes拆分每一行。
  • 这给了我们两个部分:1美元是MBytes之前的一切。 $ 2是MBytes之后的所有内容
  • 我们在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

答案 1 :(得分:0)

如果您的数据是固定长度格式,则可以始终使用cut

cut -c38-41 data

如果你知道这些值是4个字符宽。