Linux从文件的每一行获取数据

时间:2018-07-18 11:18:32

标签: 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.69:46474       uniqueID=smwUNIX
...

我在Linux上使用bash

2 个答案:

答案 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