我有一个文本文件,其格式如下
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
标题。
答案 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/ /'