我正在尝试使用标签式空格,
找到替换逗号\t
的方法,或者实际上,它也可以是单个空格。我想用BASH做这件事,我想知道Vim是否可以完成这些任务?
我知道我可以手动或通过一个文件的命令行执行此操作:
vi [file] -c :%s/\,/\t/g
是否可以在文件循环上执行此操作,例如:
for i in *; do [vi command here]; done
感谢您的帮助
答案 0 :(得分:5)
不完全是vi,但我认为更合适
for f in * ; do sed -i -e 's/,/\t/g' $f ; done
也适用于vi(如您的样本)。但更短的方式是
sed -i -e 's/,/\t/g' *
答案 1 :(得分:5)
tr
可能比vi
更好:
for i in *
do
cat $i | tr ',' '\t' > $i.tmp
mv $i.tmp $i
done
答案 2 :(得分:1)
是的,vim可以做得非常好。一个诀窍是以ex
而不是vim
开头。它是同一个程序,ex
只是vim
的链接,但当以ex
启动时,它会出现在CLI而不是屏幕模式。
so ross$ for i in /tmp/f?; do
> ex $i << \eof
> g-,-s// /g
> x
> eof
> done