问题描述
我试图找到一种方法,用制表符空格“ 1”替换逗号“ 0”,或者实际上也可以是单个空格。我想使用BASH做到这一点,我想知道Vim是否可以完成这些任务?
我知道我可以手动或通过命令行对一个文件执行以下操作:
vi [file] -c :%s/\\,/\\t/g
是否可以在文件循环中执行此操作,例如:
for i in *; do [vi command here]; done
谢谢你的帮助
解决方法
对于此任务,
tr
可能比vi
更好的选择:
for i in *
do
cat $i | tr \',\' \'\\t\' > $i.tmp
mv $i.tmp $i
done
,不完全是vi,但我认为更合适
for f in * ; do sed -i -e \'s/,/\\t/g\' $f ; done
也将与vi一起使用(与您的示例一样)。但是较短的方法是
sed -i -e \'s/,/\\t/g\' *
,是的,vim可以做得很好。一种技巧是将其以ex
而不是vim
开头。它是同一程序,ex
只是指向vim
的链接,但是当以ex
启动时,它将出现在CLI而不是屏幕模式中。
so ross$ for i in /tmp/f?; do
> ex $i << \\eof
> g-,-s// /g
> x
> eof
> done