2011-05-13 140 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