#navi(../)
* sedコマンドでスペースのみおよび改行のみの行を削除する [#ye80c192]
sedコマンドでスペースと改行で構成された行を削除する方法をいかに記します。

#contents
#htmlinsertpcsp(linux_ads_top.html,linux-sp.html)

* 関連記事 [#n0670329]
-[[改行のみの行を削除する>逆引きUNIXコマンド/改行のみの行を削除する]]
-[[HEX形式でファイルを見たい>逆引きUNIXコマンド/HEX形式でファイルを見たい]]
-[[HEX形式でファイルを見たい・hexdumpコマンド>逆引きUNIXコマンド/HEX形式でファイルを見たい・hexdumpコマンド]]

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

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

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

* sedコマンドで改行とスペースで構成される行の削除実行例 [#l3418922]
以下のファイルを使用しました。
 $ 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

#htmlinsertpcsp(linux_ads_btm.html,linux-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS