用shell编程替换文本

用shell编程替换文本,shell,replace,Shell,Replace,我有1000多个文件,希望用另一个短语替换其中的一个特殊文本 如何在linux中通过shell脚本实现这一点?使用。类似以下内容: for file in *.txt do cp $file $file.tmp cat $file.tmp | sed 's/foo/bar/g' > $file done 您也可以使用perl: perl -pi -e 's/find/replace/g' *.txt 只是猛击 for file in *.txt do while

我有1000多个文件,希望用另一个短语替换其中的一个特殊文本

如何在linux中通过shell脚本实现这一点?

使用。

类似以下内容:

for file in *.txt
do
    cp $file $file.tmp
    cat $file.tmp | sed 's/foo/bar/g' > $file
done

您也可以使用perl:

perl -pi -e 's/find/replace/g' *.txt
只是猛击

for file in *.txt
do
   while read -r line
   do
     case "$line" in
       "*pattern*") line="${line//pattern/new}";;
     esac
     echo "$line"
   done <"$file" > t
   mv t "$file"
done
用于*.txt中的文件
做
而read-r行
做
大写“$line”
“*pattern*”)line=“${line//pattern/new}”;;
以撒
回音“$line”
完成
mvt“$file”
完成

您可以使用
-i
就地编辑文件,因此不需要临时文件或循环。
for file in *.txt
do
   while read -r line
   do
     case "$line" in
       "*pattern*") line="${line//pattern/new}";;
     esac
     echo "$line"
   done <"$file" > t
   mv t "$file"
done