つれづれ電脳記(日くらしPCに向かひて)

つれづれなるままに、日くらしPCに向かひて、その悪戦苦闘ぶりをそこはかとなく書き付くるおじさん。たまに雑談[管理人:goosyun]

つれづれなるままに、日くらしPCに向かひて、デジタル関係の悪戦苦闘ぶりをそこはかとなく書き付くるおじさんです。
たまに雑談してます。連絡・問い合わせフォームは、ページ最下部に置いています。[著者(運営人):goosyun]

(当ブログには本文中に広告リンクが含まれています。)

awkで文字列記述には引用符が必要

パソコンに向かう犬

 エイホ、カーニハン、ワインバーガーの共著「プログラミング言語AWK」を読んでいて、非常に基本的なことをあまり意識していなかったと、気づかされました。
 awk内での文字列の記述です。
 上記書籍のアクションに関する説明で、次のように記述されています。
 「文字列定数は、"Asia"や"hello,world"あるいは""のように、文字の並びを引用符で囲むことによって作られる」(プログラミング言語AWK 初版 44ページ)
 「文字列定数はダブルクォーテーションマークで囲んだ0個以上の連続する文字である」(プログラミング言語AWK 第2版 209ページ)
 この場合の「定数」というのは、変数ではない定まった「値」の意味だろうと思いますが、要は、awk内で文字列を記述するときは、ダブルクォーテーションで括る、ということです。
 非常に基本的な事柄なのに、これまであやふやな認識でいました。というのも、この点は、シェルスクリプト等における文字列記述と、しきたりが違うからです。
 Bash等のシェルで文字列を記述するには、必ずしも引用符で囲む必要がありません。「*」や「?」等のメタ文字のエスケープには引用符(シングルクォートやダブルクォート)が必要ですが、そうでない限り、引用符は必要とされません。たとえば、変数に文字列を代入するとき、「hensu=あいう」とすればよく、代入文字列を引用符で囲まなくてもOKです。
 これに対し、awk内で文字列を記述するのに、文字列をダブルクォーテーションで囲まないとエラーとなります。
 この点は、ルールが統一されておらず、注意が必要です。
 次の例をご覧ください。

awk内での文字列記述

 「echo あ:い:う」 の箇所ではクォーテーションは不要なのに対して、{print "2番目"} の箇所ではダブルクォーテーションが必要です。ちょっと紛らわしいですね。だから、意識しておくべきでしょう。何度も書いていれば、自然と体が覚えるでしょうが。

 それではまた次の記事で。
  goosyun