|
Article on other languages:
|
sed (セド)は、UNIXで生まれ、コマンドライン環境で使われる、定型的なテキストデータの処理を行うプログラム。 sedはStreamEDitorに由来し、おなじくUNIX上の対話型テキストエディタ「ed」のStream版、すなわち非対話版である。 このプログラムは、入力ファイルを行単位で読み取り、sedスクリプトと呼ばれるシンプルな命令文に従って置換などの編集をおこない、また行単位で出力する。基本的にはマッチルールに従い場合分けをおこなうフィルタと捉えることができる。オリジナル版のsedはベル研究所のマクマホンによって1973年前後に開発されたUNIXユーティリティで、現在ではコマンドラインをサポートするさまざまなオペレーティングシステムに搭載されている。 大量のテキストファイルに対して一括で定形の処理を行う場合に大変な威力を発揮する。正規表現に対応しており、ある条件の範囲内の文字列を探し出して処理することが可能。特定の条件に合った文字列を検索し置換するなどの用途に用いる。 しかしあまりに簡略化された機能と文法は取っ付きが悪く、近年ではPerlなどのより高級な言語を用いるケースが増えているようだ。
sedスクリプトの基本的な文型アドレスとコマンドsedのアドレスとは、ある行番号ないし正規表現パターンにマッチする行のことである。sedの文はアドレスとコマンドの組であり、"基本的"に「アドレスがマッチした文に従い行をコマンドで処理して出力する」という動作を全行にわたり繰り返すことで動作する(アドレスを省略した場合は全行にマッチする) 例えば次の例は入力の10行目のみを出力して他を削除するsedスクリプトである。 10 p d
"基本的に"というのは、条件によって次の行を読み込んだり、「ホールドスペース」と呼ばれるバッファに確保して後続の読み込みと合成することができるからである。これらを利用するとフォーマット変換や特定の文脈パターンを抽出するなど、かなり高度な処理が可能となる。実際sedはチューリング完全な言語であることが証明されている。 yコマンドy/検索文字/置換文字/
y/○/●/ y/△/▲/ y/□/■/
y/○△□/●▲■/
y/○△□◇/●▲■/
sコマンドs/検索文字列/置換文字列/g
ホールドスペースの利用通常のワークエリアの事をパターンスペースと呼び,これと対になる裏バッファを持っており,これをホールドスペースと呼ぶ. ホールドスペースには,次のコマンドが使用できる.
これらの命令文(スクリプト)は、次のように単独で使用しても良いが、拡張子を.sedにした(しなくてもよい)テキストデータ(これをスクリプトファイルと呼ぶ)を用意して、後述の-fオプションを用いて読み込ませることで、さらなる効率化と、スクリプトの再利用が図れる。 コマンドラインでの実行sedのインストールされているコマンドライン環境において、以下のように入力することで、データの処理がおこなえる。(○○○○.txtを入力ファイル名、○○○○.newを出力ファイル名とする。) sed -e 's/検索文字列/置換文字列/g' ○○○○.txt > ○○○○.new
sed -f ▽▽▽▽.sed ○○○○.txt > ○○○○.new
特徴対話型テキストエディタと異なり、処理の経過・内容を逐次ユーザに確認することはない。そのため処理の指示(スクリプト)に誤りがある場合、ユーザは大量の誤処理と直面することになるが、出力先を新規ファイル(上記の例の場合、.newファイル)として上書きを避け、指示内容を訂正することで対応できる。非対話型であること、複数ファイルを一括して処理できることから、作業は対話型エディタによる逐次処理に比して極めて高速であり、生産性も高い。 プログラムのソースコードや、HTMLファイル中のハイパーリンクを一括して訂正するなどの処理に使用され、プログラマには必須とも言われる。一方それだけでなく、通常の文章の誤記・表記不統一などを一括して訂正するなどの用途にも用いることができる。日本語の場合、正規表現を用いることで送り仮名を含む文章を処理できる。(この記事のノートにあるリンク先を参照) 現在ではWindowsやMacintoshなどにも移植されている。基本的にコマンドラインツールだが、これらのOS向けの版では、ユーザーがCUI(コマンドライン)に慣れてないことも考慮し、近年ではGUIで扱うためのツールも提供され始めている。 関連項目参考文献
外部リンク
|
||||||||||||||||||||||||||||||||||||||||||||||||
This article is from Wikipedia. All text is available under the terms of the GNU Free Documentation License.
Mercedes Car
This site monitored by SitePinger.net