⬜
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