我有一个文件
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
命令执行此操作?如果没有,还有其他办法吗?
答案 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