我必须替换(搜索和替换)不同目录中找到的文件的密码字段。所有字段的格式如下: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