
ソースファイルの役に立たないスペースが疲れてしまったので、vimを設定してそのスペースを表示したりしました。
問題は(常にそうではありませんが)同僚の開発者と一緒にデッドスペースを処理する必要があることが多いことです。
私は単にソースファイル(正規表現を提供)をスキャンし、与えられたすべてのファイルからスペースを削除したいと思います。
オンラインで検索しましたが(「bash 削除スペース」など)、便利なコンテンツが見つかりませんでした。
答え1
無駄な空白が行末の末尾の空白を参照している場合、GNUシステムで動作します。
find -name '*.c' -print0 | xargs -r0 sed -e 's/[[:blank:]]\+$//' -i
(*.c
ソースファイルの一致するコンテンツに置き換えます)
答え2
これは繰り返しの質問です!
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
バイナリでは使用しないでください!
答え3
Ex方式を試してください。
ex +'bufdo!%s/\s\+$//e' -scxa *.*
現在のフォルダ内のすべてのファイルから末尾のスペースを削除します。再帰(bash4 / zsh)の場合は、次のものを使用できます。新しいワイルドカードオプション(**/*.*
)。
注:この:bufdo
コマンドはPOSIX。
答え4
すでに正常なファイルに触れたくない場合は、GNUツールを使用してください。
grep -rlZ --binary-files=without-match --include='*.c' '\s$' . |
xargs -r0 sed -i 's/\s+$//'