Unix Shell脚本在子文件夹中的特定文件中查找和替换字符串

时间:2012-08-08 05:53:49

标签: sed

我想在仅在文件夹子文件夹中存在的xml文件中用“选择最佳答案”替换字符串“解决问题”。我编写了一个脚本来帮助我做到这一点,但有2个问题

  1. 它还取代了脚本的内容
  2. 它取代了子文件夹的所有文件中的文本(但我只想更改xml)
  3. 如果特定子文件夹和文件中出现文本不匹配,我想显示错误消息(最好是文本输出)。
  4. 那么请你帮我修改我现有的脚本,以便解决上述3个问题。

    我的脚本是:

    find -type f | xargs sed -i“s /解决问题/选择最佳答案/ g”

2 个答案:

答案 0 :(得分:9)

使用bash和sed:

search='Solve the problem'
replace='Choose the best answer'
for file in `find -name '*.xml'`; do
  grep "$search" $file &> /dev/null
  if [ $? -ne 0 ]; then
    echo "Search string not found in $file!"
  else
    sed -i "s/$search/$replace/" $file
  fi  
done

答案 1 :(得分:3)

find -type f -name "*.xml" | xargs sed -i "s/Solve the problem/Choose the best answer/g"

我不确定我是否理解问题3。