Fad*_*ass 9 sed perl regular-expression
我有一个保存在文本文件中的随机内存地址列表,我需要将sed
它们取出,解码它们,然后将它们保存回我的文件。但是,我尝试执行的解码操作是在我前段时间创建的 C++ 程序中处理的。我现在遇到的问题是在sed
命令中执行 C++ ;也就是说,我想反向引用需要解码的部分并将其用作我的 C++ 程序中的参数。我写了以下命令:
cat $1 | sed -r 's/(0[Xx])([0-9A-Za-z]{1,8})/\1`./convAddrs \2`/g';
Run Code Online (Sandbox Code Playgroud)
在我有机会阅读这篇文章中的答案之前,它说不sed
执行命令。是真的sed
不允许执行命令吗?如果是这样,假设我写的命令是一个有效的sed
序列,我将如何写perl
?
perl -pe 's|(?<=0x)[0-9a-f]{1,8}|`./convAddrs $&`|gei'
Run Code Online (Sandbox Code Playgroud)
perl -pe
: like sed
: 一次处理输入一行$_
,评估传递给-e
每一行的 perl [e]xpression并 [p]rint 修改后$_
的每一行。s|X|Y|gei
:替代Y
为X
在$_
([G] lobally,壳体[I] nsensitively,和治疗Y
作为一个perl [E] XPRESSION代替基本的字符串)。(?<=0x)
: 后面找0x
。[0-9a-f]{1,8}
: 1 到 8 个十六进制数字,尽可能多`./convAddrs $&`
:替换为该 shell 命令行的输出,其中$&
替换为匹配的部分。