Linuxコマンドの高度なテキスト処理について

プログラミング
スポンサーリンク

sedコマンド

テキスト編集のためのコマンドです。

主に文字列の置換処理に使います。

sedは非対話型エディタです。

動作の流れ

1.シェルから編集のためのコマンドを引数として与えて、sedコマンドを実行する。

2.sedコマンドは編集対象のテキストに対して、与えられた編集コマンドに対応する編集操作を行う。

3.編集後のテキストを、sedコマンドが標準出力に出力する。

sedでは正規表現が使えます。

元のファイルを変更しません。

パイプを使って、他コマンドの出力結果を編集できます。

sed スクリプト 対象ファイル

でOKです。

ここでの、「スクリプト」とはアドレスとコマンドを組み合わせた文字列です。

アドレスは「コマンドの作用する範囲」という意味です。

dコマンドで、行を削除します。

アドレスの範囲は、n,mの形で「n行目からm行目まで」と指定できます。

‘n,$’と指定すれば「n行目から最終行まで」と指定できます。

アドレスを省略すると、コマンドはすべての行に作用します。

アドレスは「/」で囲むことで正規表現が使えます。

pコマンドで行を表示します。

オプションなしでは、パターンスペースの関係で1行のみが表示されません。

-nオプションを付けると、特定の行だけ表示できます。

sコマンドで行を置換します。

s/置換前文字列/置換後文字列/フラグ

でokです。

フラグは省略可能です。

行ごとに最初に見つかった文字列だけ置換します。

gフラグを付けると、見つかったすべての文字列を置換えます。

‘(シングルクオテーション)で囲むと、正規表現が使えます。

置換文字列を空にすることで、置換前文字列を削除するテクニックもあります。

-nオプションとpフラグで、置換が発生した行だけを表示できます。

-rオプションで、拡張正規表現が使えます。

後方参照を利用して、マッチした文字列を置換後に埋め込むことができます。

マッチした文字列は、\1で参照できます。

アドレス指定ができます。

sの後ろの文字が自動的に区切り文字とみなされます。

/以外には!や%がよく使われます。

awkコマンド

テキスト編集のためのコマンドです。

変数や条件式なども使えるため、一種のプログラミング言語と言われます。

オークと呼びます。

awk スクリプト 対象ファイル

でOKです。

awkのスクリプトは、

パターン { アクション }

の2つで構成されています。

パターンは、アクションを実行する条件を書きます。

awkでは、処理中に読み込んでいく1行の入力テキストをレコードと呼びます。

アクションは、テキスト編集処理を書きます。

パターンを省略すると、すべてのレコードに対してアクションが実行されます。

awkは、特定のフィールドを抽出して表示する列選択によく使われます。

フィールド分割は、スペースもしくはタブが区切り文字として認識されます。

awkは各フィールド間のスペース数がまちまちの表示を加工するのに便利です。

組み込み変数NFはレコードの最後のフィールドを意味します。

$NFをprintするとレコードの最後のフィールドが表示されます。

アクションを省略すると、{print $0}が実行されます。

-Fオプションで区切り文字を指定できます。

パターンの指定

awkで正規表現のパターンを指定するには、/で囲って記述します。

awkでは記述した正規表現は自動的に拡張正規表現として解釈されます。

~(チルダ)を使って、正規表現がマッチするか調べます。

パターンを、フィールド ~ 正規表現 で書きます。

パターンとして正規表現「/^l/」のみ指定すると、シンボリックリンクだけが表示されます。

コメント

タイトルとURLをコピーしました