同时在同一文件上运行多个 sed 命令

Sha*_*e G 0 sed string replace

要将字符串 foo 的所有出现更改为 bar 在我使用的目录中的所有文件中

sed -i -- 's/foo/bar/g' *
Run Code Online (Sandbox Code Playgroud)

发现这里

但我也想将 NAME 更改为 name 等。我试过了,

sed -i -- 's/foo/bar/g' * ; sed -i -- 's/NAME/name/g' *

这会创建新文件。如何使用此命令重写原始文件,将 foo 替换为 bar 并将 NAME 替换为 name,然后再进行其他替换,而不创建新文件?

Kus*_*nda 8

您可以sed在一次调用中给出多个表达式:

sed -e 'expr' -e 'expr' -e ...
Run Code Online (Sandbox Code Playgroud)

在你的情况下:

sed -e 's/foo/bar/g' -e 's/NAME/name/g'
Run Code Online (Sandbox Code Playgroud)

表达式将从左到右依次应用于每一行输入。