如何在需要在shell上运行的长文本中搜索和替换字符串

如何在需要在shell上运行的长文本中搜索和替换字符串

我有很长的文本,每次执行运行时我都需要搜索并替换这个长文本中的相同字符串;我的问题是搜索和替换此文本并在再次运行之前预览它的最佳方法是什么,例如:

ansible-playbook ~/main.yml --extra-vars "selected_playbook=start_here.yml url=http://app.zip name='FOO_1' tag='FOO_1' region=us-east-1 owner='FOO_1' DB_USERNAME=FOO_1"

我喜欢替换所有 FOO_1 到 FOO_2

答案1

使用zsh,您可以输入~/.zshrc

autoload -Uz replace-string
zle -N replace-string-pattern replace-string
bindkey '\er' replace-string-pattern

然后按Alt+后Rzle将提示您输入图案和替换。

您甚至可以使用诸如FOO_(<->)模式和FOO_$((match+1))替换之类的东西来将所有FOO_<number>s 替换为FOO_<number+1>

然后,由于replace-string默认情况下将重用相同的模式+替换(如果按Enter),因此可以轻松地重新运行相同的命令,并且每次增加的数量,尽管为此您可能更喜欢执行以下操作:

for n (FOO_{1..10}) ansible-playbook ~/main.yml --extra-vars "selected_playbook=start_here.yml url=http://app.zip name='$n' tag='$n' region=us-east-1 owner='$n' DB_USERNAME=$n"

相关内容