使用sed -i更改了回声或预览文本

ard*_*igh 4 sed

使用sed,您可以轻松更改多个文件中的文本,例如:

 sed -i 's/cashtestUS/cheque_usd/g' *.xml
Run Code Online (Sandbox Code Playgroud)

问题是,这具有巨大的力量,复杂的正则表达式很容易产生无法预料的后果.

有没有一种简单的方法可以做到:

1)回应所做的更改
2)在预览模式下运行sed,以便可以预览潜在的更改

Jon*_*ler 12

在预览模式下运行,不带-i:

sed -e 's/cashtestUS/cheque_usd/g' *.xml
Run Code Online (Sandbox Code Playgroud)

(这-e不是必需的;它只是说下一个参数是sed脚本,或脚本的一部分sed.)这会将所有输出写入标准输出.您可能会通过less(或more)传递它,或者通过它grep来查看更改的行是您期望的那些.或者您可以一次处理一个文件并运行差异:

for file in *.xml
do
    echo "$file"
    sed -e 's/cashtestUS/cheque_usd/g' "$file" | diff -u "$file" -
done
Run Code Online (Sandbox Code Playgroud)

要么 …