2011-05-13 109 views
1

我想从我的.rb文件中删除所有尾部空格。另外我想删除所有尾部的^ M字符。这是我得到的。它看起来好吗?删除所有尾部空格

find . -name '*.rb' | xargs perl -pi -e 's/ +$//' 
+3

这里有问题吗? – Dancrumb 2011-05-13 14:00:21

+0

我相信它也是(但请参阅Mimisbrunnr的回答)。你在问什么? – mcrumley 2011-05-13 14:03:34

+0

对不起人。问题已更新。运行该命令的 – 2011-05-13 14:05:08

回答

4

如果你想为结尾的空白使用\s元字符它代表所有空格字符

find . -name '*.rb' | xargs perl -pi -e 's/\s+$//' 

如果你想保持一个换行符然后更改替换术语像

正则表达式
find . -name '*.rb' | xargs perl -pi -e 's/\s+$/\n/' 

find . -name '*.rb' | xargs perl -pi -e 's/\s+$/\r\n/' 

但是,这将意味着行现在再次具有尾随空白。

+0

正在将所有100行缩减为一行。这不好。 – 2011-05-13 14:04:03

+0

尝试使用'\ s + $ // m''为多行模式 – mcrumley 2011-05-13 14:06:18

+0

您说删除所有尾部空白,包括最后的'\ n'或'\ r',所以你会得到一条线。 – zellio 2011-05-13 14:06:35

0

我想找到+的sed会做的工作适合你:

find . -name '*.rb' -exec sed -i.bak 's/\s*$//' {} \; 

的Mac使用此命令,因为\s(Perl扩展)未承认Mac的sed的:

find . -name '*.rb' -exec sed -i.bak 's/[ ^I^M]*$//' {} \; 

-i用于内联编辑
-i.bak用于保留具有.bak扩展名的原始备份。

+0

@Nick Vanderbilt:上面的命令将删除所有后缀的^^M字符,同时保留空白行。 – anubhava 2011-05-13 14:15:03

+0

太棒了。它正在工作。谢谢。我如何告诉它对.js,.erb,.txt和.css执行相同的操作。 – 2011-05-13 14:16:53

+0

您的脚本最终将删除's'。 - @households = @ user.households + @households = @ user.household – 2011-05-13 14:26:44