gpt4 book ai didi

regex - 如何在 sed Replace 命令中传递可变行号

转载 作者:太空宇宙 更新时间:2023-11-04 04:52:20 27 4
gpt4 key购买 nike

我正在尝试执行这样的 sed 操作

sed -i '100s/abc/xyz/' filename.txt

我想在 Perl 脚本中的变量 $var 中输入 100。所以,我正在尝试这样

system("sed -i "${vars}s/abc/xyz/" filename.txt"). 

这引发了一些错误。

再次,当我这样做时,将系统命令放在单引号中:

system('sed -i "${vars}s/abc/xyz/" filename.txt')

这是错误的替换。可以做什么?

最佳答案

更好、更安全的是使用system的LIST变体,因为它避免了不安全的shell命令行解析。在您的例子中,命令 sed 将接收未更改的命令行参数,并且不需要引用它们。

注意:我添加 -MO=Deparse 只是为了说明单行代码编译后的内容。

注意:为了安全起见,我添加了 -e,因为命令行上有 -i 需要一个参数。

 $ perl -MO=Deparse -e 'system(qw{sed -i -e}, "${vars}s/abc/xyz/", qw{filename.txt})'
system(('sed', '-i', '-e'), "${vars}s/abc/xyz/", 'filename.txt');
-e syntax OK
<小时/>

当然,实际上,在 Perl 本身中进行处理而不是调用 sed 会更容易...

关于regex - 如何在 sed Replace 命令中传递可变行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54759531/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com