是的,我知道,我可以使用sed。但我们假设我是某种病态的。如果你愿意,那就是受虐狂......
我有一个文件/tmp/a.script
,包含:
%s_"taxonomy\.php[^"]*\([0-9]\)_"\1.taxonomy_g
%s_"rtf\.php[^"]*\([0-9]\)_"\1.rtf_g
%s_"csv\.php[^"]*\([0-9]\)_"\1.csv_g
%s_"xml\.php[^"]*\([0-9]\)_"\1.xml_g
(我从我的vim历史中咆哮他们)
我非常希望vim对文件执行这些命令,比如说example.html
。
但是,我无法弄清楚如何对该文件执行此脚本。
我知道-c
命令行参数。但它只执行一个命令,我想执行所有这些命令。
有任何想法吗?
答案如下,作为参考,一个快速的方法来做到这一点:
for i in *.html ; do
sed -i'' -e 's_"taxonomy\.php[^"]*\([0-9]\)_"\1.taxonomy_g' $i
sed -i'' -e 's_"rtf\.php[^"]*\([0-9]\)_"\1.rtf_g' $i
sed -i'' -e 's_"csv\.php[^"]*\([0-9]\)_"\1.csv_g' $i
sed -i'' -e 's_"xml\.php[^"]*\([0-9]\)_"\1.xml_g' $i
echo $i
done
引用,我养成了这样做的习惯,我正在运行ZSH,之前我可能已经有了一些有趣的行为。你对sed的评论是有意义的,我会这样做,但想要一个更容易理解的例子。不是每个人都是grawity忍者!
—
布莱恩·亨特
sed
示例的注释:1)-i''
相当于-i
由于Bash处理引用的方式; 2)您可以-e
多次给出,或s///
用分号分隔命令,以避免多个sed调用; 3)你可以*.html
直接给sed。