[英]using sed to substitute a string
我有这样一条线:
22.665774 Fr RMSG 0 0 1 1 18 11 Rx 0 308002 5 20 1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81 1 40937
我想解析它并以某种方式替代它,以便仅获得这一部分:
a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc
目前,我正在使用此:
sed -re \"s/^.+x//\
但这仅给了我x之前的部分。请给我一些提示吗?
谢谢 。
它必须被镇静吗? cut
做得完美。
echo '22.665774 Fr RMSG 0 0 1 1 18 11 Rx 0 308002 5 20 1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81 1 40937' | cut -d' ' -f22-53
您可以使用此表达式来匹配整行并捕获字符串aftex x <hex> <hex>
:
.*?\sx\s\w*?\s\w*?\s(.*?)\s\w{4,}.*
假设x
始终是您想要截断字符串其余部分的定界符。
编辑 :
在命令行上执行此操作的完整命令:
echo " 22.665774 Fr RMSG 0 0 1 1 18 11 Rx 0 308002 5 20 1d6 x 20 20 a8 4f 35 40 1b 00 0f 08 f7 89 ff fa ff f3 35 80 49 00 00 00 00 30 00 00 80 ab 4b 54 40 f0 00 fc 714a81 1 40937" | perl -pe "s/.*?\sx\s\w*?\s\w*?\s(.*?)\s\w{4,}.*/\1/"
我不熟悉sed,但这适用于一般的regex情况:
此正则表达式将匹配字符串"a8 ... fc"
,其中"..."
可以是十六进制字节(仅小写字母)和空格的任意组合:
/a8([0-9a-f ]+)fc/
然后,您可以使用以下命令在同一正则表达式中使用替换:
/a8$1fc/
在这里$1
将被括号([0-9a-f ]+)
的匹配替换。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.