gpt4 book ai didi

sed在找不到字符串时用警告替换字符串

转载 作者:行者123 更新时间:2023-12-03 23:26:34 25 4
gpt4 key购买 nike

我想使用 sed 更改一堆类似脚本中的一行。其中一些脚本实际上并不包含我想要更改的行。但是, sed 并没有告诉我它没有改变行,因为它不存在。关于如何让 sed 发出警告的任何想法?
说,我有脚本一

    log export ALBET=0.155
log export ALBEG=0.218
log export RADGHGCOEF=1.0
和脚本二
    log export ALBET=0.168
log export ALBEG=0.201
然后
    sed -i 's/RADGHGCOEF=.*/RADGHGCOEF=2.0/' script
对它们都适用,但我想知道在脚本 2 中实际上没有包含 RADGHGCOEF 的行要更改。
谢谢!

最佳答案

使用这个 Perl 单行:

perl -i -pe '$found++ if s/RADGHGCOEF=.*/RADGHGCOEF=2.0/; END { warn "$ARGV: not found\n" if !$found; }' script
Perl 单行使用这些命令行标志: -e : 告诉 Perl 寻找内嵌代码,而不是在文件中。 -p : 一次循环输入一行,将其分配给 $_默认情况下。添加 print $_在每次循环迭代之后。 -i :就地编辑输入文件(覆盖输入文件)。 $ARGV : 当前输入文件名。 $found++ if s/.../.../ : 增加 1 $found来自其 undef 的变量初始值,以便它现在变为 1(或更多,取决于替换发生的次数)。 END { ... } : 读取整个输入文件后执行代码。 if !$found :如果替换从未发生, $foundfalse在 bool 上下文中),否则 true .
另见:
perldoc perlrun : how to execute the Perl interpreter: command line switches
perldoc perlvar : Perl predefined variables

关于sed在找不到字符串时用警告替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63849994/

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