sed如何替换标准输入

sed如何替换标准输入

我必须替换(搜索和替换)不同目录中找到的文件的密码字段。所有字段的格式如下:field = value

我尝试过的是:

grep -i  fieldofinterest /etc/filemod*/*| sed  's/[=].*$/ = myvalue/'

这似乎有效,但如果我尝试写入,则会出现错误,未给出输入文件。

我该如何进行这种替换?

答案1

即兴:

grep -l fieldofinterest /etc/filemod*/* | while read filename; do
  sed 's/fieldofinterest.*/fieldofinterest = myvalue/' "$filename" > tmp && mv tmp "$filename"
done

收集grep -l包含以下内容的文件名兴趣领域并通过临时文件将它们传递到while循环进行替换。sed如果你的 sed 有,-i你可以将其简化为:

grep -l fieldofinterest /etc/filemod*/* | while read filename; do
  sed -i 's/fieldofinterest.*/fieldofinterest = myvalue/' "$filename" 
done

相关内容