我有一个充满文本文件的文件夹,我想要grep特定的字符串,然后通过sed在该特定行的开头(在所有出现搜索字符串的地方)添加一个字符串(比如说“ +”)。
到目前为止,我得到了:
if grep -q &MyString /path/to/folder/* ; then
echo "String detected"
sed 's/^/+ /g' -i [what to put in here?]
fi
根据我放在方括号中的内容,它要么在每个文本文件的每一行前添加字符串,要么不执行任何操作,因为我没有定义正确的文件。我将如何引用之前检测到String的文件?
谢谢
grep -l &MyString /path/to/folder/* | uniq | while read line
do
echo "String detected"
sed '/&MyString/ s/^/+ /g' -i $line
done
将grep与-l一起使用仅打印文件名,使用uniq进行重复数据删除,然后读取输出的每一行。从输出中获取每一行,使用它来表示sed($ line)中的文件名。
$(grep ...)中的var相对于read行,因为这会导致文件中带有空格的文件出现问题,因为输出中的每个空格分隔变量都将用来表示文件名。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句