Unix从线上读

时间:2015-02-28 18:31:42

标签: unix awk

我有一个文件

 80.162.213.195:193.219. 52.163:193.219. 62.126:   82   76:          1:         46
193.219. 54. 75: 66.163.173.201: 62. 40.103.217:   76   82:          2:        100
193.219.160.130:192.117. 97.153: 62. 40.103.217:    3   82:          2:         80
193.219. 54. 73:194. 67. 23.251: 62. 40.103.217:   76   82:          6:        685
193.219.178.146:195. 22.174.130:193.219. 62.126:    4   76:        920:      38968
 63.240. 86. 34:193.219.163. 65:193.219. 61.247:   82    3:         18:      19326
193.219.140.  1:216.239. 51.101: 62. 40.103.217:   76   82:          2:         80
193.219. 76. 39:195. 14.178.189:193.219. 62.126:    4   76:          1:        397
193.219.174.174:217.230.136.  5: 62. 40.103.217:    0   82:          2:         96
193.219.160.134:208.172. 16.132: 62. 40.103.217:    3   82:         12:        516
193.219.163.246:213.226.132. 46:193.219. 62.126:    3   76:          1:         40
193.219. 61.  3:216. 21.234. 71: 62. 40.103.217:    3   82:          4:        300
212.122. 64.  6:193.219.191. 98:193.219. 61.247:   76    3:          7:        974
193.219. 61.  9:212. 59.  0.233:193.219. 62.126:    3   76:         14:       1369

此处的:符号就像一个分隔符。我需要阅读每行的最后两个数字。是否可以使用awk命令执行此操作?如果没有,还有其他办法吗?

3 个答案:

答案 0 :(得分:2)

使用awk -F选项将分隔符设置为:,并打印最后两个字段:

awk -F: '{printf "%d %d\n", $(NF-1), $NF}' filename

答案 1 :(得分:1)

使用

awk '{ gsub(/:$/, "", $(NF - 1)); print $(NF - 1), "\t", $NF }'

此处$NF是最后一列,$(NF - 1)是最后一列之前的列。这里gsub(/:$/, "", $(NF - 1));:修剪掉。

文件的示例输出

$ cat test | awk '{ gsub(/:$/, "", $(NF - 1)); print $(NF - 1), "\t", $NF }'
1    46
2    100
2    80
6    685
920      38968
18   19326
2    80
1    397
2    96
12   516
1    40
4    300
7    974
14   1369

答案 2 :(得分:0)

如果没有看到您的预期输出,那么这可能是您想要的:

cut -d: -f5- file