我有一个文件,其中有很多(〜2k)行,类似于:
117 VALID|AUTHEN tcp:10.92.163.5:64127 uniqueID=nwCelerra
....
991 VALID|AUTHEN tcp:10.19.16.21:58332 uniqueID=smUNIX
我只需要IP地址(上面显示的10.19.16.21)和uniqueID的值(上面显示的smUNIX)
我能够接近:
cat t.txt|cut -f2- -d':'
10.22.36.69:46474 uniqueID=smwUNIX
...
我在Linux上使用bash
。
答案 0 :(得分:3)
使用awk:
awk '{split($3,a,":"); split($4,b,"="); print a[2] " " b[2]}'
默认情况下,如果在空格上进行拆分,则可以使用一些额外的代码来拆分子字段
更新: 甚至更容易覆盖默认的定界符:
awk -F '[:=]' '{print $2 " "$4}'
答案 1 :(得分:0)
使用grep和sed:
grep -oP "^\d+ [A-Z]+\|[A-Z]+ \w+:\K(.*)" | sed "s/ uniqueID=/ /g"
输出:
10.92.163.5:64127 nwCelerra
10.19.16.21:58332 smUNIX