在许多文件中用逗号空格替换逗号

时间:2011-04-12 20:41:12

标签: bash vim vi edit

我正在尝试使用标签式空格,找到替换逗号\t的方法,或者实际上,它也可以是单个空格。我想用BASH做这件事,我想知道Vim是否可以完成这些任务?

我知道我可以手动或通过一个文件的命令行执行此操作:

vi [file] -c :%s/\,/\t/g

是否可以在文件循环上执行此操作,例如:

for i in *; do [vi command here]; done

感谢您的帮助

3 个答案:

答案 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