正規表現とは、文字列の集合を表現する方法である。 正規表現はawkプログラミングにおいて非常に基本的な 部分であるので、その書式と使い方は章を分けて説明するに値する。 スラッシュ(`/')に囲まれた正規表現は、その正規表現が示す集合に 属するテキストが含まれる全ての入力レコードにマッチするawkの パターンである。 もっとも単純な正規表現は、文字や数字、もしくはその両方の並びである。 このような正規表現はそのような並びを含む任意の文字列にマッチする。 したがって、`foo'という正規表現は`foo'を含む任意の文字列 にマッチすることになる。 それにより、/foo/というパターンはレコードのどこであっても `foo'という三文字を含む入力レコードにマッチすることになる のである。他の種類の正規表現は、あなたがより複雑な文字列の集合を指定でき るようにするものである。 Initially,
awkの基本的な機能は、ファイルからあるパターンを含んでいる行(もし くは他のテキストの構成単位)を検索することである。ある行がパターンの一つ にマッチしたとき、awkは特定のアクションをその行に対して実行する。 awkはこのようにして入力ファイルの最後の行までそれぞれの行を処理し 続ける。 awkのプログラムは他の大部分の言語とは異なっていて、data-driven である。これは処理したいと思うデータについて記述し、さらにそれを 見つけたときにどのようなことをするのかということについて記述する。という ことである。他のほとんどの言語は手続き型(procedural)である。それら においては、事細かに、プログラムの各ステップ毎にどのようにするかを記述し なければならない。手続き型言語を使用しているときは、あなたがプログラムで 処理しようとしているデータがどのような構造をしているかを明確
awk 'BEGIN {FS="n"; RS="ORS="-"} {print $1,$NF}' aaaa ファイルの中身 ----------------- 1 2 3 4 5 6 7 8 9 ----------------- 以下のスクリプトの実行 ファイルの1から3 4から6 7から8をひとつのデータとして考える awk ' BEGIN { FS="n"; # カラムの区切りを改行に RS=""; # レコードの区切りを空白に(ファイルの3と4の間) OFS="*"; # 出力のデミリタ(カンマがあればOFSに変わる $1,$NFの部分) ORS="nn" # 出力のデミリタ(改行二つが1回ごとの実行のデミリタとなる) } { print NR"." $1,$NF # NR:現在の行 / NF:1レコードの最大カラムの位置 } END { p
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く