如何在搜索的基础上在文件的内容中附加字符串

时间:2014-04-14 14:46:34

标签: linux unix

到目前为止,我已尝试在unix脚本下面根据搜索附加文件内容。一切都好。但是如果我多次运行相同的下面脚本,则perl命令会继续附加到文件中。

searchArr=(test1 test2 test3)

replaceArr=(somestring1 somestring2 somestring3) 

a=`echo ${#searchArr[@]}`
echo $a
for ((i=0;i<$a;i++))
do
searchValue=`echo ${searchArr[i]}`
replaceValue=`echo ${replaceArr[i]}`
for file in `find . -name \* -print`; do
  grep "$searchValue" $file &> /dev/null
  if [ $? -ne 0 ]; then
    echo "Search string not found in $file!"
  else
   perl -p -i -e "s/$searchValue/$replaceValue/g" $file
    echo $file "Replace string Success!"
  fi  
done
done

电流输出: -

如果运行多次,它会继续这样追加。 例如,如果运行两次,它将追加两次

somestring1somestring1test1
somestring2somestring2test2
somestring3somestring3test3

需要的输出: - 无论它运行多少次

somestring1test1
somestring2test2
somestring3test3

1 个答案:

答案 0 :(得分:0)

为您的sed搜索模式添加单词边界。

Beginning and end of words in sed and grep