在UNIX上的多个文件中,使用sed来用通配符替换值的最佳方法

时间:2019-02-04 16:45:35

标签: sed

我做了很多小单行-只是想知道是否有更好的方法-介意你,我真的不介意这种方式,只是想知道。

问题:在多个期望脚本中将set timeout whatever替换为set timeout 10

mkdir .1111
for i in sssh*; do
    echo $i
    cat $i | sed "s:set timeout.*:set timeout 10:g" > .1111/$i
done
mv .1111/* .
rmdir .1111

如果您有改进,请发布。 我敢打赌,在perl中可以做得更好,但我不在那里;)

2 个答案:

答案 0 :(得分:0)

一个常见的成语是这样的:

find . -type f -name "sssh*" -print0 | xargs -0 sed -i 's:set timeout.*:set timeout 10:g'

您可以根据目标文件的位置来调整find的参数。

答案 1 :(得分:0)

在你们提供的所有find和sed示例中,我都看到了替换的过程,但是我没有看到文件的实际更改方式。我想我从未理解过sed实际上会编辑文件并将其写回吗?我总是把它和|一起使用。 ,因此必须处理临时文件等等。

相关问题