特定のファイル(複数)の行末にある末尾の空白を削除するにはどうすればよいですか?


9

私はそれらを表示するようにvimを構成したソースファイル内の不要なスペースにうんざりしています。

問題は、(いつもではないにしても)私の仲間の開発者と無駄なスペースを扱わなければならないことが非常に多いということです。

ソースファイルをスキャンし(正規表現を指定)、指定されたすべてのファイルから空白を削除したいのですが。

私はウェブ( "bash remove whitespace"など)を検索しましたが、有用なものは見つかりませんでした。


2
空白を削除しますか?あなたが削除したいものの例がなければ、私は誰かがあなたをどのように助けることができるかわかりません。(私がtr -d ' ' < file.fooあなたが探しているものとは正確に違うと思います。)
マット

役に立たない空白と有用な空白の違いをプログラムでどのように見分けることができますか?ところで:forループとmvを使用して、空白をsedして折りたたむことができます。
bsd 2013

また、あなたは(あなたの後に編集何か、このコマンドを再実行するためにあなたの手間を省く)のvimでファイルを保存するときに末尾の空白を削除することができます:unix.stackexchange.com/questions/75430/...
ルーカス

回答:


8

無駄な空白によって行末の空白を意味する場合、これはGNUシステムで機能します。

find -name '*.c' -print0 | xargs -r0 sed -e 's/[[:blank:]]\+$//' -i

*.cソースファイルが一致するものに置き換えます)


タイトルを変更しました。回答ありがとうございます。誰かがそのような質問をするべきではない、と彼はそれがとても単純だと思ったので、誰かが反対票を投じました;^)。ありがとうございました。
Olivier Pons 2013

1

これは再発する問題です!

perl -i -pe 's/\s+\n/\n/'  ./*.c

(これも ' \r\n'を削除します)

私は通常、少し複雑なバージョンの「nrs」を使用します(余分なスペースはありません)。

#!/usr/bin/perl -pi
s/\h*(\r\n|\n|\r)/\n/g;                 ## normalize \n (DOS, MAC)
s/^(\xFF\xFE|\xFE\xFF|\xEF\xBB\xBF)//;  ## remove BOM !

インストール:(chmod 755 nrs; cp nrs ~/bin; または類似)

そして使用: nrs ./*.c

バイナリファイルでは使用しないでください。



0

GNUツールを使用して、すでに問題のないファイルに触れないようにするには:

grep -rlZ --binary-files=without-match --include='*.c' '\s$' . |
  xargs -r0 sed -i 's/\s+$//'
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.