Bash Linux从文件的每一行获取数据
我有一个包含许多(~2k)行的文件,类似于:Bash Linux从文件的每一行获取数据,bash,Bash,我有一个包含许多(~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.
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
使用awk:
awk '{split($3,a,":"); split($4,b,"="); print a[2] " " b[2]}'
默认情况下,如果在空格上拆分,则可以使用一些额外的代码拆分子字段
更新:
更容易覆盖默认分隔符:
awk -F '[:=]' '{print $2 " "$4}'
使用awk:
awk '{split($3,a,":"); split($4,b,"="); print a[2] " " b[2]}'
默认情况下,如果在空格上拆分,则可以使用一些额外的代码拆分子字段
更新:
更容易覆盖默认分隔符:
awk -F '[:=]' '{print $2 " "$4}'
使用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
使用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