git diff → あああ空白がああ という時のTIPS

2024/10/30に公開

こんにちは、沙代です。
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