使用cut命令进行文本处理的问题

时间:2013-05-28 13:14:11

标签: bash cut

我有一个文本文件,其格式如下

 data: [      142] CPU 10 <v:0xffffffff3d4331bc> <p:0x004d38331bc> Nrml Read 4 bytes  0x2a72c08

我想在v:p:前面提取两个十六进制值。结果我想要一个这样的输出

 ffffffff3d4331bc 004d38331bc

问题是分隔字符无法与cut命令一起正常工作。现在我用

 cut -d: -f3 data2.txt

但输出为0xffffffff3d4331bc> <p

我也不想要0x标题。

1 个答案:

答案 0 :(得分:3)

 grep -oP '<[vp]:0x[0-9a-z]+' data.txt | sed 's/.\{5\}//'

在评论中建议 @chepner ,您可以使用积极的后视断言,这将减少答案

 grep -oP '(?<=<[vp]:0x)[0-9a-z]+' data.txt | sed 'N;s/\n/ /'