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


sedコマンドでスペースのみおよび改行のみの行を削除する

sedコマンドでスペースと改行で構成された行を削除する方法をいかに記します。


関連記事

sedコマンドの構文

以下のコマンドで対象ファイル内の改行のみ行を削除することができます。
削除した内容を保存するファイル名は、出力ファイル名に設定してください。

sed '/^ *$/d' 対象ファイル名 > 出力ファイル名

または

cat 対象ファイル名 | sed '/^ *$/d' > 出力ファイル名

以下に実行例を記します。

sedコマンドで改行とスペースで構成される行の削除実行例

以下のファイルを使用しました。

$ cat -n sakura.txt
    1  line1
    2
    3  line2
    4
    5  line3

2行目と4行目が対象になります。
2行目は改行のみです。
4行目は最初に半角スペースが2文字あり改行しています。
odコマンドを使ってHEXで見てると確認できます。

$ od -tx1c sakura.txt
0000000  6c  69  6e  65  31  0a  0a  6c  69  6e  65  32  0a  20  20  0a
          l   i   n   e   1  \n  \n   l   i   n   e   2  \n          \n
0000020  6c  69  6e  65  33  0a
          l   i   n   e   3  \n
0000026

実行結果は以下の通りです。

0x20が削除されて、スペースと改行のみで存在している行が削除されています。
$ cat sakura.txt | sed '/^ *$/d'
line1
line2
line3

$ cat sakura.txt | sed '/^ *$/d' | od -tx1c
0000000  6c  69  6e  65  31  0a  6c  69  6e  65  32  0a  6c  69  6e  65
          l   i   n   e   1  \n   l   i   n   e   2  \n   l   i   n   e
0000020  33  0a
          3  \n
0000022


トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:27:51