⬜
git diff → あああ空白がああ という時のTIPS
こんにちは、沙代です。
git diffで差分を確認すると、不意に予想していない赤い表示が。ああ、スペース残っちゃってたか、ということありますよね。
エディタのCursorとか使ってやろうかと思ったのですが、シェル芸の方が早かったので、今日はそのことを書いてみようと思います。
sed (GNU sed) 4.4
状況
file_to_commit.txt
hello
world
2行目は実は
(半角スペース3つ)ですね。
実は3行目にworld の後に半角スペースも潜んでいます。
git diffで差分を確認すると赤く光ります。
sedを使う
空白だけからなる行の空白を削除して空行にする
sed -i 's/^[[:space:]]*$//' file_to_commit.txt
一瞬です。
行の末尾のtrailing空白文字を削除する
sed -i 's/[[:space:]]\+$//' file_to_commit.txt
一瞬です。(実はこちらだけでも、前者を兼ねてしまう気もします)
少し解説
-i
sedのオプションで、ファイルを直接編集するためのオプションです。これをしないと標準出力に処理された文字列を表示するだけです。
's/[[:space:]]\+$//'
/
が区切り文字、s
は置換(substitute)、[[:space:]]
は空白文字を表して、\+
はそれが1文字以上で、その後ろに$
行末が来ることを示します。//
はそれを``に置き換えることを示します。
感想
シェル芸は強いですね。
Discussion