gawkとは? わかりやすく解説

gawk

別表記:ガーク

「gawk」の意味・「gawk」とは

「gawk」は英語の単語であり、日本語に訳すと「ぼんやり見る」「ぽかんと見る」などの意味を持つ。特に、驚き興味から目を離せない様子や、無作法にじろじろと見つめる様子を表す際に用いられる例えば、美術館初めて見る絵画見入ってしまう様子や、街中で珍しいものを見つけてじっと見つめてしまう状況などに「gawk」という単語使われる

「gawk」の発音・読み方

「gawk」の発音は、IPA表記では/gɔːk/となる。これをカタカナ置き換えると「ゴーク」となる。また、日本人発音する際のカタカナ英語としては「ガーク」が近い。この単語発音によって意味や品詞が変わる単語はないため、一つ読み方のみを覚えればよい。

「gawk」の定義を英語で解説

英語の辞書によると、「gawk」は「to stare openly and stupidly」つまり、「開けっ広げに、愚かに見つめる」と定義されている。この定義からも、「gawk」がどのような状況使われるかが理解できる例えば、驚きのあまり口を開けたまま何かを見つめてしまう様子や、興味津々無作法にじっと見つめてしまう様子などを表す。

「gawk」の類語

「gawk」の類語には、「stare」、「gape」、「goggle」などがある。「stare」は「じっと見る」、「gape」は「口を開けて見る」、「goggle」は「目を大きく開けて見る」といった意味で、「gawk」と同じく見つめる様子を表す単語である。

「gawk」に関連する用語・表現

「gawk」に関連する表現としては、「gawk at」がある。「gawk at」は「~をぼんやりと見る」、「~をじろじろ見る」といった意味で、「gawk」の後に見つめる対象を置くことで具体的な状況表現することができる。

「gawk」の例文

1. He was gawking at the paintings in the museum.(彼は美術館絵画をぼんやりと見ていた。)
2. Don't gawk at people like that, it's rude.(そんな風に人をじろじろ見ないで、それは無礼だ。)
3. She gawked at the strange creature.(彼女はその奇妙な生き物をじっと見つめた。)
4. The tourists gawked at the tall buildings.(観光客たちは高いビルをぼんやりと見ていた。)
5. I couldn't help but gawk at the beautiful sunset.(美し夕日見て、思わず見入ってしまった。)
6. The children were gawking at the candy shop.(子供たちキャンディショップをじっと見つめていた。)
7. He gawked at the accident scene.(彼は事故現場ぽかんと見ていた。)
8. She gawked at the handsome actor.(彼女はそのハンサムな俳優じろじろ見ていた。)
9. The crowd gawked at the street performer.(群衆ストリートパフォーマーをじっと見つめていた。)
10. I gawked at the stunning view from the top of the mountain.(山頂からの素晴らし景色見入ってしまった。)

AWK

(gawk から転送)

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2024/07/17 02:04 UTC 版)

AWK
AWKのロゴ
登場時期
  • 1977年 
開発者 アルフレッド・エイホ 
最新リリース IEEE Std 1003.1-2008 /
影響を受けた言語 SNOBOLBourne Shell 
テンプレートを表示

AWKオーク[1][2][3])は、プログラミング言語の一つ。 テキストファイル、特に空白類(スペースの他、タブなど)やカンマなどで区切られたデータファイルの処理を念頭に置いた仕様となっているが、一般的なプログラミングに用いることも可能である。UNIX上で開発された。

概要

AWKは、ベル研究所におけるUNIX開発の過程で、sedgrepのようなテキスト処理ツールに演算機能を持たせた拡張ツールとして1977年[4]に開発された。そのため、UNIX上のユーティリティである sort の存在を前提としている[4]

簡単なスクリプトを記述することで効率的にテキストファイルを処理することが目的であった。 当初はそれほど多くの機能は無かったが、普及するにつれ、さまざまな処理をAWKで実行したいと考えるユーザーが増え、その希望に応えて1985年[4]に機能の拡張が行われた。その結果、汎用のプログラミング言語と比べても遜色が無いほどの機能を持つようになり、テキスト処理だけに留まらず、開発者も予想しなかったような大規模なプログラミングに使われるような例もあらわれた。一方、本来のテキスト処理用ツールとしても扱いやすく、現在でもCSV形式のファイルを簡易に処理する、などの目的で広く使用されている。

「AWK」という名称は、開発者であるアルフレッド・エイホピーター・ワインバーガーブライアン・カーニハンの3人の苗字の頭文字を取って付けられたものであるが、AWKは「オーク」と読み、「エー・ダブリュー・ケー」と読んではならないと著者らはしている[注釈 1]。 また、全て小文字でawkとした場合、Unix系OSないしPlan 9における、AWKのインタプリタ処理系プログラム自体(他の多くのコマンドと同じく全て小文字である)を指してそうしていることがある。

AWKの文法

基本構成

AWKのスクリプトは、パターンとアクションの組を並べた形になっている。 実行を開始すると、まずBEGINパターンのアクションを実行する。 以降、入力を読み込んでは、レコード分離文字(既定では改行)までを1レコードとし、ユニット分離文字(既定では連続するスペースまたは水平タブ)に従ってフィールドに分割してから、レコードがパターンにマッチするかを調べ、パターンにマッチしたらそのパターンに対応するアクションを実行する。 一致するパターンが複数ある時は、該当するアクションが上から順に全て実行される。これを入力が尽きるまで繰り返す。入力が尽きたら、ENDパターンのアクションを実行し、終了する。すなわち、テキストストリームをシーケンシャルに読み込み、入力されるテキストストリームをレコードセパレータ毎に区切り、1行毎にスクリプトに記述されたアクションを順次実行する。

ファーストクラスデータ型は、数値(全て倍精度浮動小数点型で扱われる)と文字列である。

他に文字列をキーとした連想配列があるが、連想配列はファーストクラスではなく関数の返戻値にできないなどデータというよりは、配列変数という変種の変数があるといったような扱いである。連想配列の中身(要素)を連想配列にすることはできないため、ループするようなデータ構造を作ることは不可能。連想配列のキーに数値を使うと、文字列に変換したものがキーとなる。 arr[x, y]のようにして多次元配列のように見えるアクセスもできるが、実際には各次元を必要であればまず文字列化した後に、グローバル変数SUBSEPの文字列(デフォルトではU+001C <control-001C>)をセパレータとして連結した文字列をキーとしてアクセスする。

スクリプトの基本構成は次のようになる。

BEGIN {
    開始時処理
}
パターン1 {
    アクション1
}
パターン2 {
    アクション2
}
……
# コメント
END {
    終了時処理
}

BEGINENDアクションは必須ではない。

例として、テキストファイル内の全ての行のうち、空行の数と「林檎」・「りんご」または「リンゴ」という文字列を含む行の数をそれぞれ出力するAWKプログラムを示す。

BEGIN {
    # 行の個数を表わす変数を宣言・初期化
	blank_line = 0
	bol_apple = 0
}

/^$/ {
	++blank_line
}

/(林檎|りんご|リンゴ)/ {
	++bol_apple
}

END {
	print "空行は" blank_line "行です。"
	print "「林檎」・「りんご」または「リンゴ」という文字列を含むのは" bol_apple "行です。"
}

なお、AWKでは、まだ代入されていない変数は暗黙のうちに0または""で初期化されると仮定してよいので、上の例でのBEGINブロックは必須ではない。

パターンには以下のように開始と終了を定義するパターンもある。

/開始パターン/,/終了パターン/ {
    アクション
}

例えば、以下のようなプログラムは、「<script>」を含む行から「</script>」を含む行まで(その行自身を含む)の間、指定されたアクションが実行する(この場合は単に行全体を出力する)。

/<script>/,/<\/script>/ {
    print $0;
}

変数

AWKの特徴の一つとして変数が型を持たないことが挙げられる。変数宣言が不要で、プログラム中で使用される変数は暗黙のうちに初期化される。このため、未定義変数や未初期化変数を参照することによるエラーはAWKには存在しない。

AWKは算術演算のような数値を必要とする文脈では暗黙に値を数値に変換し、逆に文字列を必要とする場合には文字列に変換する。 例えば、

a = "01"
b = 2
d = a + b
e = a + b + c

のような例では、dおよびeの値は3になる。

こうした暗黙の変換は便利であると同時に、利用者の意図しない結果を生むこともある。

また、変数に入っているのがどちらかわからないが、必ず数値が必要という場合などにx + 0のように0を足したり、逆に必ず文字列が必要という場合などにx ""のように""を結合させたりする、という常套手段がある。

関数

AWKでは、関数を定義して使用することが可能である。

関数の定義は次のようになる。

function 関数名 (引数1, 引数2, ……)
{
   命令文1
   命令文2
   ……
}

AWKの変数は、引数を除いて全て大域変数であり、局所のスコープを持つのは引数として宣言された変数だけである。このため、技法として、関数定義で余分な引数を宣言し、それを局所変数として使う、ということが行なわれる。AWKでは、関数の呼び出し時に、実引数の個数が仮引数の個数より少なくても、省略とみなしエラーとしない。これを利用して、余分な引数を局所変数として使うのである。

function 関数名 (引数1, 引数2, 引数3, 局所変数1, 局所変数2, ……)
{
   ……
}

このように関数を定義した上で,呼び出すときに引数を3つしか使わなければ、局所変数1以降は局所変数として扱える。構文上の区別は無いが、判読性を向上させるために両者の間に十分な空白を挿入するのが慣例になっている。

function 関数名 (引数1, 引数2, 引数3,
局所変数1, 局所変数2, ……)
{
   ……
}

また、関数は再帰呼び出しもできる。

制御構造

AWKの制御構造には以下のようなものがある。

if文
  • if () 式が真の時に実行される文
  • if () 式が真の時に実行される文 else 式が偽の時に実行される文
for/while文
  • for (初期化式; 条件式; 更新式) 実行される文
  • for (変数 in 配列) 実行される文
  • while () 実行される文
  • do 実行される文 while ()
  • break
  • continue
その他
next
以降の文の実行および以降のパターン処理をせずに、次のレコードの処理を開始する
nextfile
現在の入力ファイルの残りを読み込まずに、次のファイルの処理を開始する
return
関数の処理を停止し、関数の呼び出し元に制御を戻す。値が指定されてあれば値を返す。
exit
プログラムの実行を終了させる

また、制御構造の他に、以下の文がある。

  • {1; 2; ……; n}
  • print
  • printf
  • delete

連想配列の全部ないし一部の要素を削除

AWKの処理系

もともとのAWKは、UNIXに付属していたものであったが、 様々なプラットフォームに移植された他、GNU AWK(gawk)を代表に、他の実装も多い。

旧版
1970年代後半から1980年頃開発されていたもので、V7の頃のUNIXに付属、『UNIXプログラミング環境』(en:The Unix Programming Environment)4.4節での説明で使われている版でもある[5]。関数のユーザー定義ができないのが、現在と比べると大きな制限である。これ、ないし次を指して、日本ではくだけた感じで「元祖」などと呼ぶ。
nawk
1980年代後半頃までのバージョンアップにより登場したもので、SVR3の頃のUNIXに付属[5]。旧バージョンと区別してnawk(new awk)とも。関数のユーザー定義などの機能が追加された。一つの真正の、といった感じで、他と区別する場合はone true awkなどとも呼ばれる。(BSDでは本家 UNIX とは別の実装になっているtoolも多いが)FreeBSD(バージョン5およびそれ以降)の/usr/bin/awkなどはこれである。大きな機能追加などは以前から無いが、現在もメンテナンスされている[6]。 FreeBSD、NetBSD、OpenBSD、macOS、illumos、Android などで使用されている。
gawk
GNUプロジェクトによるAWKの実装。GNU/Linuxディストリビューションではawkという名前のプログラムがこの実装であることが多い。POSIX 1003.2コマンド言語とユーティリティ規約に定められた言語の定義に適合している。マルチバイト文字への対応やネットワークへの接続機能など、オリジナルのAWKには無い多数の拡張が加えられており、現在もバージョンアップが続いている。
jgawk
gawk がマルチバイト文字に対応する以前に作られた gawk の日本語文字対応拡張版。
mawk
マイク・ブレナン(: Mike Brennan)作。旧版のawkに少数の拡張が加えられている。バイトコードに変換されて実行されるため,高速な動作が期待できる。またgawkよりもバイナリサイズが小さい。
mawk MBCS
木村浩一(ハンドル名:Bruce)によるmawkのマルチバイト拡張。
標準
AWKはawk(1)としてIEEE Std 1003.1-2017で標準化されている[7]。また、Linux Standard Baseでも指定コマンドになっている[8]

脚注

注釈

  1. ^ たとえばカーニハンによる『プログラミング言語AWK』の日本語版序文に見られる。なお、同書の表紙にはオオウミガラス: great auk)が描かれており、これもその主張の強調である。

出典

  1. ^ AWK(オーク)でプログラミング”. Googleブックス. 2024年7月17日閲覧。
  2. ^ awk 【Aho Kerninghan Weinberger】”. IT用語辞典. 2024年7月17日閲覧。
  3. ^ 【 awk 】コマンド(基本編)――テキストの加工とパターン処理を行う”. ITmedia. 2024年7月17日閲覧。
  4. ^ a b c アルフレッド・エイホ, ブライアン・カーニハン & ペーター・ワインバーガ 1989, pp. x-xi, §序文.
  5. ^ a b 志村拓, 鷲北賢 & 西村克信 1993, p. 43.
  6. ^ ソースリポジトリ − https://github.com/onetrueawk/awk
  7. ^ awk”. IEEE 及び The Open Group (2013年). 2018年10月14日閲覧。
  8. ^ Relevant Commands”. Linux Foundation (2015年). 2018年10月14日閲覧。

参考文献

  • プログラミング言語AWK
    1. アルフレッド・エイホブライアン・カーニハンペーター・ワインバーガ 著、足立高徳 訳『プログラミング言語AWKトッパン、1989年11月。ISBN 4-8101-8008-5  - 「AWK book」(AWK 本)などと呼ばれ、C言語におけるK&Rのような扱いの本である。日本版は版元の出版事業撤退により最初に絶版となる。
    2. A・エイホ、B・カーニハン、P・ワインバーガー 著、足立高徳 訳『プログラミング言語AWK』シイエム・シイ出版部、2001年2月。ISBN 4901280406  - トッパン 1989年刊の再刊。
    3. A・エイホ、B・カーニハン、P・ワインバーガー 著、足立高徳 訳『プログラミング言語AWK新紀元社、2004年2月。ISBN 4-7753-0249-3  - 新紀元社から復刊されたものの、3度目の絶版となる。
    4. A・エイホ、B・カーニハン、P・ワインバーガー 著、足立高徳 訳『プログラミング言語AWKユニバーサル・シェル・プログラミング研究所、2010年1月。ISBN 978-4-904807-00-2  - ユニバーサル・シェル・プログラミング研究所から3度目の復刊がなされた。
  • 志村拓、鷲北賢、西村克信『AWKを256倍使うための本』アスキー、1993年3月。ISBN 4-7561-0162-3  - アスキーの256本のひとつで、通称「AWK256本」とも呼ばれており、現在も販売中のベストセラーである。
  • Dale Dougherty、アーノルド・ロビンス 著、福崎俊博 訳『sed & awk プログラミング 改訂版』オライリー・ジャパン、1997年10月。ISBN 4-900900-58-3 
  • Arnold Robbins 著、福崎俊博 訳『sed & awk デスクトップリファレンス』オライリー・ジャパン、2000年7月。ISBN 4-87311-017-3 

関連項目

外部リンク


gawk

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/03 14:17 UTC 版)

AWK」の記事における「gawk」の解説

GNUプロジェクトによるAWK実装GNU/Linuxディストリビューションではawkという名前のプログラムがこの実装であることが多い。POSIX 1003.2コマンド言語ユーティリティ規約定められ言語の定義に適合している。マルチバイト文字への対応やネットワークへの接続機能などオリジナルAWKには無い多数拡張加えられており、現在もバージョンアップ続いている。

※この「gawk」の解説は、「AWK」の解説の一部です。
「gawk」を含む「AWK」の記事については、「AWK」の概要を参照ください。

ウィキペディア小見出し辞書の「gawk」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「gawk」の関連用語

gawkのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



gawkのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
実用日本語表現辞典実用日本語表現辞典
Copyright © 2025実用日本語表現辞典 All Rights Reserved.
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアのAWK (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、WikipediaのAWK (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS