2

我正在尝试构建一个使用“sed”执行以下操作的脚本:

  • 在当前目录及其下的所有目录中搜索以 .config 结尾的文件(即:test.js.config)。
  • 用另一个字符串替换一个字符串(即:{TEST} -> 50)
  • 将结果保存在末尾没有 .config 的新文件中(例如:test.js)
  • 删除原来的.config文件(即:test.js.config)

如果它能够使用另一个具有“要搜索的字符串”和“要替换的字符串”的文件,那就太好了,比如字典:

{测试} = 50

{FIRST_NAME} = 亚历克斯

4

1 回答 1

0

您可以将一堆 seds///命令放在一个文件中:

$ cat change.sed 
s/{TEST}/50/g
s/{FIRST_NAME}/Alex/g

如果您有以下配置输入: $ cat test.js.config alert({TEST}) alert({FIRST_NAME})

结果将是:

$ sed -f change.sed test.js.config > test.js
$ cat test.js
alert(50)
alert(Alex)

语法不是很好,但也不可怕:)

OTOH,如果您真的想在替换文件中使用括号语法...

$ cat test.js.config 
alert({TEST})
alert({FIRST_NAME})

...以及替换文件中的键值对...

$ cat change.txt 
TEST=50
FIRST_NAME=Alex

...您可以编写一个 sed 命令来更改 sed 替换中的键值对...

$ sed 's#\(.*\)=\(.*\)#s/{\1}/\2/g#' change.txt
s/{TEST}/50/g
s/{FIRST_NAME}/Alex/g

...并在实际替换中使用此命令:

$ sed "$(sed 's#\(.*\)=\(.*\)#s/{\1}/\2/g#' change.txt)" test.js.config > test.js
$ cat test.js
alert(50)
alert(Alex)
于 2012-06-01T16:26:05.983 回答