シェルスクリプトで空白行を削除する方法

※Linux(Ubuntu や WSL)での Bash シェルスクリプトを想定したコマンド解説です。

以下のような sed コマンドを使えば、テキストファイルから空行・空白(スペースやタブなど)だけの行をすべて削除できます:

sed '/^[[:blank:]]*$/d' input.txt > output.txt

解説:

  • ^[[:blank:]]*$:行頭から行末まで、スペースやタブ(空白)だけで構成されている行を意味します。
  • d:該当する行を削除。
  • input.txt:元のファイル。
  • output.txt:空白行を削除した結果を保存するファイル。

上書きしたい場合:

元ファイルを上書きしたいなら -i オプションを使います(対応している環境でのみ):

sed -i '/^[[:blank:]]*$/d' input.txt

ちなみに grep を使ったバージョンもあります(削除というより「非表示」する形):

grep -v '^[[:blank:]]*$' input.txt > output.txt

こっちは「空白だけの行を除外して表示」した結果をファイルにするという意味です。どちらも用途に応じて使い分けてください。

追伸

LinuxやUbuntuをこれから試してみたい!と言う人や、今までWindowsで使っていたPCをWindowsは残したままLinuxやUbuntuを活用してみたい人は以下の本がおすすめ!
https://amzn.to/44AU7B5

LinuxやUbuntuを使おうとして、初心者の人が最初にコマンドで戸惑うのが普通です。そんな初心者に向けてマンガで超わかりやすいコマンドについて学べるのはシス管系女子みんとちゃんの本!
https://amzn.to/3FMTx5v

シェアする

  • このエントリーをはてなブックマークに追加

フォローする