*

sed で連続した複数の空行を1つにまとめる

公開日: : 最終更新日:2014/07/16 パソコン

前日の記事「 WSH で初めてのプログラミング 」で行った作業ですが、ちょっと不満があったのでやり直し。

プログラムではなく、データ自体の問題。

6000以上ある個別のテキストファイルのうちのかなりのものが重複しているのですが、改行が1つ余分に入っているだけで同じファイルとは認識されず、ほぼ同じデータが最終データに大量に混入します。

そこでまたいろいろ考えたのですが、たしか sed(ストリームエディタ)で昔やったことがあるな、と。

sed マニュアル

調べてみるとありました。

/^$/{
N
/^\n$/D
}

 

上の sed 用コマンドで、複数個の連続した改行(空の行)を1つに縮められます。

> sed –f commandfile < file1 >file2

の書式を使って簡単に終了。

もちろん1個1個こんなことはしておらず、DOS用のsedコマンドを使ったためバッチファイルと組み合わせて一括で処理してしまいました。

前日の結果よりも 500個近い重複ファイルが排除され、ずいぶんスリムになりました。

上は DOS で行ったのでめんどくさいですが、Linux なら sed  も標準で装備していますし、強力なシェルスクリプトもありますので、もっと簡単。

上の sed 用コマンドを commandfile というファイルにしておいて次のようなシェルスクリプトを端末から走らせれば、テキストファイルが 6000個だろうと 6000万個だろうと一発ですんでしまいます。

 

#!/bin/bash

shori_files=”$(find /tmp/shorizen -name *.txt)”
for file in $shori_files
do
    sed -f commandfile < $file >  /temp/shorigo $file
done

###

 

関連記事

DELL Optiplex760 2台目(2) 再生

* これは昨日紹介したマシン。 CPU:Pentium Dual E5300 /

記事を読む

XOOPSでつくる!最強のコミュニティサイト

XOOPSでつくる!最強のコミュニティサイト 小川 晃夫 南大沢ブロードバンド研

記事を読む

医局のみんなでパソコンを使いたい

大昔の話なので、今は笑い話かも。 普通の事務所なら普通に行っていることが、パソコン音痴の多い医

記事を読む

Media Espresso での MP4化

 QSV を使った高速変換がウリの Media Espresso ですが、主に PlaySta

記事を読む

久々の回線トラブル

今朝早起きして残した仕事を片付けてから出勤しようと思ったら、自宅の PCがネットにつながらない。

記事を読む

Ryzen5 ミニPC 購入

また ミニPCをアマゾンで注文。 「インテルは逝ってる」ようなので、AMD Ryzen 5 3

記事を読む

Netac SSD 128GB 2.5インチSATA

Netac という素性の知れない中華メーカーの NVMe タイプの SSD を買ったら 予想

記事を読む

CrystalDiskInfo でディスクを調べる

結局あと1台セリ落として、今週は 9台の中古ハードディスクをゲット。 そのうち 3台のハードデ

記事を読む

SPD Q300SE(SSD SATA 512GB)

【18日限定ポイント5倍】SPD SSD 512GB 【5年

記事を読む

ケーブル一体型切替器KVM-KU4

ELECOM ケーブル一体型切替器(USB) KVM-KU4 by

記事を読む

Message

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

外来種のカニ対策にタコを持ち込んだイタリア人の末路

https://www.youtube.com/watch?v=nCO

20万点以上のデジタルウォールアートバンドル(2)

「20万点以上のデジタルウォールアートバンドル」という Etsy.co

300点以上の日本の壁掛けアート

Etsy.com で「300点以上の日本の壁掛けアート」と称した作品集

【AI】Gemini 3.8Flash 登場

Gemini 3.8 Flash を Google DeepMindが

20万点以上のデジタルウォールアートバンドル

「20万点以上のデジタルウォールアートバンドル」という製品を

→もっと見る

  • 2026年9月
     123456
    78910111213
    14151617181920
    21222324252627
    282930  
  • アクセスカウンター
PAGE TOP ↑