gpt4 book ai didi

Perl:编辑文件,而不仅仅是输出到 shell

转载 作者:行者123 更新时间:2023-12-01 23:43:57 25 4
gpt4 key购买 nike

我发现了一小行 perl 代码,它会改变我绑定(bind)服务器上区域文件中的序列号。但是它不会更改实际文件,它只是将输出直接提供给 shell。

这是我运行的:

find . -type f -print0 | xargs -0 perl -e "while(<>){ s/\d+(\s*;\s*[sS]erial)/2015050466\1/; print; }"

这为我提供了正确的 shell 输出,如果我删除了 perl 行末尾的 print;,则什么也不会发生,我希望它实际将文件更改为我得到的输出。

我对 Perl 完全是个菜鸟,所以这可能是一个简单的修复,所以任何答案都将不胜感激。

最佳答案

我假设您想替换 find 找到的文件中的字符串。下面的命令示例将 in-place (-i) 任何 "foo" 更改为 "bar" 所有*.txt 来自当前目录的文件。

find . -type f -name '*.txt' -print0 | xargs -0 perl -p -i -e 's/foo/bar/g;'

对于你的问题,你应该可以用这个命令得到它:

find . -type f -print0 | xargs -0 perl -p -i -e 's/\d+(\s*;\s*[sS]erial)/2015050466\1/;'

注意:始终使用单引号而不是双引号是个好习惯。这是因为在双引号内,\$ 等可能在传递给 Perl 之前由 shell 处理。参见 Bash manual .

关于Perl:编辑文件,而不仅仅是输出到 shell,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30024500/

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