我需要编写一个脚本文件,以递归方式迭代给定开始文件夹中的所有文件。
在每个文件中,它应该替换一个字符串。
文件如下所示
--recursive
每个文件的FOO和BAR都不同,但是我想用value1的字符串(在这种情况下为FOO)替换value2的字符串(在本例中为BAR)。
答案 0 :(得分:1)
这样的东西有效!使用GNU grep
标识搜索模式,使用perl
进行就地替换。
#!/bin/bash
while IFS='' read -r -d '' filename
do
value1=$(grep -oP '(?<=value1=\s").*(?=")' "$filename")
value2=$(grep -oP '(?<=value2=\s").*(?=")' "$filename")
perl -pi.bak -e "s/\( value1= ".*"\)/(\ value1= \"$value2\"\)/;" -e "s/\( value2= ".*"\)/(\ value1= \"$value1\"\)/" "$filename"
done < <(find . -maxdepth 1 -type f -print0)
删除-i.bak
一次以查看替换文件是否在stdout
中正确显示,确认后再添加标记。
答案 1 :(得分:-1)
使用sed -re'/ s /你想要替换/替换/ g'文件