sed スペース 空白文字の整理・空白行の削除

スポンサーリンク

sed で、スペース・タブ、空行に関する処理をまとめました。これらは、フィールドやレコードのセパレータとして使われるので、使いこなせるようになるとデータ解析の前処理が楽になります。

スポンサーリンク

スペース・タブ(空白文字)の処理

複数のスペースを1つにする

1個以上のスペースは(space)(space)*で表現できます。間違いが多いのは、(space)*です。*は「直前の文字を0回以上繰り返し」という意味をもつので、この場合「任意」になってしまいます。

書式

sed -e 's/(space)(space)*/(space)/g'  
# (space)は' '

例 複数のスペースを1つに変換

複数のスペースを1つのスペースに置き替えます。

$ cat sed_space.dat
aaa bbb ccc      # (space)1個。
aaa  bbb ccc     # (space)2個・1個。
aaa   bbb   ccc  # (space)3個。
$ cat sed_space.dat | sed -e 's/  */ /g'
aaa bbb ccc
aaa bbb ccc
aaa bbb ccc

例 複数のスペースを1つに変換(指定間違い)

複数のスペースを1つのスペースに置き替えます。sed(space)*を指定すると、全ての文字の前にスペースが挿入されてしまいます。

$ cat sed_space.dat | sed -e 's/ */ /g' # s/(space)が1個
 a a a b b b c c c 
 a a a b b b c c c 
 a a a b b b c c c 

タブ・スペースの混在を1つのスペースにする

タブやスペースは混在することが多くて整形するのが面倒です。1回以上のタブ又はスペースの繰り返しは、[(space)(tab)][(space)(tab)]*で表現できます。(space)と(tab)の順序は関係ありません。端末(コンソール)でタブを直接入力するには、「Ctrlキー」を押しながら「v」・その後「Tabキー」を押します。

書式

sed -e 's/[(space)(tab)][(space)(tab)]*/(space)/g'  
# (space)は' ' (tab)は'    '

例 タブまたはスペースが混在をスペースを1つに変換

複数のスペースを1つのスペースに置き替えます。

$ cat sed_space2.dat 
aaa bbb ccc                  # スペース
aaa	 bbb ccc             # スペース・タブ
aaa		bbb 	ccc  # スペース・タブ混在
$ cat sed_space2.dat | sed -e 's/[         ][      ]*/ /g' 
# []内は(space)(tab)
aaa bbb ccc
aaa bbb ccc
aaa bbb ccc

行末のスペースを削除

行末に不要なスペースが残っていると連結処理などで地味に邪魔になることがあります。行末は$で表現します。「$」直前の空白文字を削除「//」します。

書式

sed -e 's/[(space)(tab)]*$//'  
# (space)は' ' (tab)は'    '

例 行末のスペース・タブを削除

行末のスペース・タブを削除します。

$ cat sed_space3.dat
aaa bbb ccc     # スペース・タブ混在
aaa bbb ccc  	# スペース・タブ混在
aaa bbb ccc	# スペース・タブ混在
$ cat sed_space3.dat | sed 's/[    ]*$//' > sed_space4.dat
# []内は(space)(tab)。結果は、sed_space4.datをエディタで確認。
スポンサーリンク

空行・1行目・最終行の削除

sedを使った空白行の処理です。

空白行を削除

空白行にレコードの区切りなど意味があるときもありますが、無駄な空白行はとても邪魔です。空白行は、/^$/で指定して、sedのdコマンドで削除します。

例 行末のスペース・タブを削除

不要な空白行を削除します。

$ cat sed_space5.dat
aaa bbb ccc


aaa bbb ccc

aaa bbb ccc
$ cat sed_space5.dat | sed -e '/^$/d'
aaa bbb ccc
aaa bbb ccc
aaa bbb ccc

1行目・最終行を削除

1行目は不要なヘッダーがあったり、最終行は単なる空白行だったり、1行目と最終行は削除することも多いです。sedのdコマンドで行番号を指定して削除すると簡単です。

例 1行目削除

1行目を削除します。

$ cat sed_space6.dat
1 aaa bbb ccc
2 aaa bbb ccc
3 aaa bbb ccc
$ cat sed_space6.dat | sed -e '1d'
2 aaa bbb ccc
3 aaa bbb ccc

例 最終行削除

最終行目を削除します。最終行の指定は$です。

$ cat sed_space6.dat
1 aaa bbb ccc
2 aaa bbb ccc
3 aaa bbb ccc
$ cat sed_space6.dat | sed -e '$d'
1 aaa bbb ccc
2 aaa bbb ccc
とにかく、早く問題を解決したい人にはこちら>>直接、データ解析相談
とにかく早く問題解決したい人はこちら>>直接、論文相談
スポンサーリンク

関連記事

SED 便利な使い方 ファイル読み込み・ファイル書き出し
sedのファイル読込みコマンド(r)・ファイル書き込みのコマンド(w)が便利です。指定の位置に外部ファイルからデータを読み込んだり、パターンにマッチした部分を一括で複数のファイルに分割するなどの便利な処理を行うことができます。知っていれば、...
sed コマンド 行指定の置換・削除(アドレッシング)
sedコマンドの処理は行単位です。何も指定しなければすべての行が対象になりますが、アドレシングを指定することで特定の行だけに作用させることができます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 sed コマンド 行指定の...
sed コマンド 削除(行番号とパターン)
sedで行の削除を行う際はdコマンドを使います。アドレスやパターンと一緒に指定します。アドレスの指定は、dコマンドの直前に行番号を指定します。ちなみに、末尾は$で表現可能です。パターンの指定は、行の特徴を正規表現で指定します。 とにかく早く...
sed コマンド 置換(全体と部分指定)
sedで置換を行う際はsコマンドを使います。マッチしたパターン全てに置換処理を適用したい場合は、gフラグを指定します。一方、部分的に置換処理を適用したい場合は数字を指定します。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 ...
sed コマンド 置換・削除・アドレッシングまとめ
sedはとても便利なツールです。 よく使うコマンドやアドレシング・否定の指定方法など、ちょっとしたテクニックも知っておくと便利です。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 よく使うsedコマンド 置換や削除はよく使い...
sed コマンド スクリプトファイルの実行 スクリプトの書き方
sedはテキスト編集ツールとして有名なツールの1つです。 フィルタリングや置換処理を行うときに使います。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 sedの書き方 コマンドライン中で簡単なフィルタリングを行ったり、コマン...
sed コマンド 単純な置換
sed で単純な文字列置換を行います。sed の置換コマンド「s」を使います。 複数のコマンドを並べて、連続で置換処理を行うことができます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 sed の書き方(置換) sed '...
正規表現 メタキャラクタ 検索・置換 前編
sed や awk、grep、その他のプログラム処理で文字列を扱うときに、よく用いられる「正規表現」についてまとめます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 正規表現とは 正規表現とは、文字列集合を特殊文字(メタキ...
正規表現 メタキャラクタ 検索・置換 後編
sed や awk、grep、その他のプログラム処理で文字列を扱うときに、よく用いられる「正規表現」についてまとめます。 とにかく早く問題解決したい人はこちら>>直接、データ解析相談 正規表現とは 正規表現とは、文字列集合を特殊文字(メタキ...
タイトルとURLをコピーしました