如何解决有条件的查找和替换
我正在尝试执行条件查找并替换多个文件。文件内容可能是
$value$plusargs("DEC_ARG=%0d",val1);
$value$plusargs("HEX_ARG=%h",val2);
$value$plusargs("STRING_ARG=%s",val3);
如果有$value$plusargs
,这里我想用get_dvalue_args
替换%0d
,如果是get_hvalue_args
,则要替换%h
,依此类推。
所需的输出是
get_dvalue_arg("DEC_ARG",val1);
get_hvalue_arg("HEX_ARG",val2);
get_svalue_arg("STRING_ARG",val3);
我在下面尝试了“ awk”命令,但将其所有行替换为get_dvalue_arg,
awk '/=%0d/&&/$plusargs/{sub("$value$plusargs","get_dvalue_args")}1'
我也在下面尝试了“ sed”命令,但结果相同,
sed -i '/=%0d/{s/$value$plusargs/get_dvalue_args/}'
请注意,我可以通过vim录制来做到这一点,但是我必须一次一个地修改每个文件,而我正在寻找一种更好的方法来一次锁定多个文件
解决方法
使用具有<script src="https://use.fontawesome.com/releases/v5.0.8/js/all.js"></script>
<button class="casino-btn">BONUS
<i class="fa fa-gift bonus-icon" aria-hidden="true"></i>
</button>
选项的sed来启用ERE,例如GNU或OSX / BSD sed:
-E
使用任何POSIX sed:
$ sed -E 's/\$(value)\$plus(args\("[^=]+)=%0?(.)/get_\3\1_\2/' file
get_dvalue_args("DEC_ARG",val1);
get_hvalue_args("HEX_ARG",val2);
get_svalue_args("STRING_ARG",val3);
,
Perl oneliner
perl -pne "s/\$value\$plusargs(\(\"[A-Z_]+)=%\d?([a-z])/get_$2value_arg$1/;" data_file
输入
$value$plusargs("DEC_ARG=%0d",val1);
$value$plusargs("HEX_ARG=%h",val2);
$value$plusargs("STRING_ARG=%s",val3);
输出
get_dvalue_arg("DEC_ARG",val1);
get_hvalue_arg("HEX_ARG",val2);
get_svalue_arg("STRING_ARG",val3);
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。