[Top] [Contents] [Index] [ ? ]

General Introduction

This file documents awk, a program that you can use to select particular records in a file and perform operations upon them.

Copyright © 1989, 1991, 1992, 1993, 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.

This is Edition 3 of GAWK: Effective AWK Programming: GNU Awk¤Î¤¿¤á¤Î¥æ¡¼¥¶¡¼¥º¥¬¥¤¥É, for the 3.1.5 (or later) version of the GNU implementation of AWK.

Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.2 or any later version published by the Free Software Foundation; with the Invariant Sections being "GNU General Public License", the Front-Cover texts being (a) (see below), and with the Back-Cover Texts being (b) (see below). A copy of the license is included in the section entitled "GNU Free Documentation License".

  1. "A GNU Manual"
  2. "You have freedom to copy and modify this GNU Manual, like GNU software. Copies published by the Free Software Foundation raise funds for GNU development."

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

½øÊ¸

Arnold Robbins and I are good friends. We were introduced 11 years ago by circumstances--and our favorite programming language, AWK. The circumstances started a couple of years earlier. I was working at a new job and noticed an unplugged Unix computer sitting in the corner. No one knew how to use it, and neither did I. However, a couple of days later it was running, and I was root and the one-and-only user. That day, I began the transition from statistician to Unix programmer.

On one of many trips to the library or bookstore in search of books on Unix, I found the gray AWK book, a.k.a. Aho, Kernighan and Weinberger, The AWK Programming Language, Addison-Wesley, 1988. AWK's simple programming paradigm--find a pattern in the input and then perform an action--often reduced complex or tedious data manipulations to few lines of code. I was excited to try my hand at programming in AWK.

Alas, the awk on my computer was a limited version of the language described in the AWK book. I discovered that my computer had "old awk" and the AWK book described "new awk." I learned that this was typical; the old version refused to step aside or relinquish its name. If a system had a new awk, it was invariably called nawk, and few systems had it. The best way to get a new awk was to ftp the source code for gawk from prep.ai.mit.edu. gawk was a version of new awk written by David Trueman and Arnold, and available under the GNU General Public License.

(Incidentally, it's no longer difficult to find a new awk. gawk ships with Linux, and you can download binaries or source code for almost any system; my wife uses gawk on her VMS box.)

My Unix system started out unplugged from the wall; it certainly was not plugged into a network. So, oblivious to the existence of gawk and the Unix community in general, and desiring a new awk, I wrote my own, called mawk. Before I was finished I knew about gawk, but it was too late to stop, so I eventually posted to a comp.sources newsgroup.

A few days after my posting, I got a friendly email from Arnold introducing himself. He suggested we share design and algorithms and attached a draft of the POSIX standard so that I could update mawk to support language extensions added after publication of the AWK book.

Frankly, if our roles had been reversed, I would not have been so open and we probably would have never met. I'm glad we did meet. He is an AWK expert's AWK expert and a genuinely nice person. Arnold contributes significant amounts of his expertise and time to the Free Software Foundation.

This book is the gawk reference manual, but at its core it is a book about AWK programming that will appeal to a wide audience. It is a definitive reference to the AWK language as defined by the 1987 Bell Labs release and codified in the 1992 POSIX Utilities standard.

On the other hand, the novice AWK programmer can study a wealth of practical programs that emphasize the power of AWK's basic idioms: data driven control-flow, pattern matching with regular expressions, and associative arrays. Those looking for something new can try out gawk's interface to network protocols via special `/inet' files.

The programs in this book make clear that an AWK program is typically much smaller and faster to develop than a counterpart written in C. Consequently, there is often a payoff to prototype an algorithm or design in AWK to get it running quickly and expose problems early. Often, the interpreted performance is adequate and the AWK prototype becomes the product.

The new pgawk (profiling gawk), produces program execution counts. I recently experimented with an algorithm that for n lines of input, exhibited ~ C n^2 performance, while theory predicted ~ C n log n behavior. A few minutes poring over the `awkprof.out' profile pinpointed the problem to a single line of code. pgawk is a welcome addition to my programmer's toolbox.

Arnold has distilled over a decade of experience writing and using AWK programs, and developing gawk, into this book. If you use AWK or want to learn how, then read this book.

 
Michael Brennan
Author of mawk

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

Á°½ñ¤­

´ö¤Ä¤«¤Î¼ïÎà¤Î¥¿¥¹¥¯¤Ï¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë¤È¤­¤Ë·«¤êÊÖ¤·¸½¤ì¤ë¡£ ¤¢¤Ê¤¿¤ÏÆÃÄê¤Î¹Ô¤ò¼è¤ê½Ð¤·¤Æ»Ä¤ê¤ò¼Î¤Æ¤¿¤¤¤È¹Í¤¨¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ¤¢¤ë¤¤¤ÏÆÃÄê¤Î¥Ñ¥¿¡¼¥ó¤¬¸½¤ì¤¿¤È¤³¤í¤Ç¤ÏÊѹ¹¤ò¹Ô¤¦¤è¤¦¤Ë¤·¤¿¤¤¤¬ »Ä¤ê¤Ï¤½¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤­¤¿¤¤¤È¹Í¤¨¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ¤³¤ì¤é¤Î¥¿¥¹¥¯¹Ô¤¦¤¿¤á¤Ë¤òC¤äC++¡¢Pascal¤Î¤è¤¦¤Ê¸À¸ì¤ÇÀìÍÑ¤Î¥×¥í¥°¥é¥à¤ò µ­½Ò¤¹¤ë¤³¤È¤Ï»þ´Ö¤òϲÈñ¤¹¤ë¤·Èó¸úΨ¤Ç¤¢¤ë¡£ ¤³¤Î¤è¤¦¤Ê»Å»ö¤Ïawk¤Ç¤Ï´Êñ¤Ë¤Ç¤­¤ë¡£ awk¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ïñ½ã¤Ê¥Ç¡¼¥¿¤ÎºÆ¥Õ¥©¡¼¥Þ¥Ã¥È¤Î¤è¤¦¤Ê »Å»ö¤ò´Êñ¤Ë°·¤¦¤³¤È¤Î¤Ç¤­¤ëÆÃ¼ìÍÑÅÓ¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤ò²ò¼á¤¹¤ë¡£

GNU ¤Î¼ÂÁõ¤Ë¤è¤ë awk ¤Ïgawk ¤È¸Æ¤Ð¤ì¡¢ System V Release 4 version ¤Î awk ¤ËÂФ·¤Æ´°Á´¾å°Ì¥³¥ó¥Ñ¥Á¥Ö¥ë¤Ç¤¢¤ë¡£ gawk ¤Ï¤Þ¤¿¡¢POSIX ¤ÎÄê¤á¤¿ awk ¸À¸ì¤Îµ¬Äê¤ËÂФ·¤Æ¤â¾å°Ì¸ß´¹¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¡¢¤­¤Á¤ó¤È½ñ¤«¤ì¤¿awk ¤Î¥×¥í¥°¥é¥à¤Ï gawk¤Ç¤âưºî¤¹¤ë¡£ ¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£¤·¤¿¤¬¤Ã¤Æ¡¢¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ç¤Ï gawk ¤È¾¤Î awk¤È¤Î¼ÂÁõ¾å¤Î°ã¤¤¤ò½Ò¤Ù¤ë¤è¤¦¤Ê¤³¤È¤Ï¤·¤Ê¤¤¡£

awk¤ò»È¤Ã¤Æ¤Ç¤­¤ë¤³¤È¤Ï:

¤½¤ì¤Ë²Ã¤¨¤Æ¡¢gawk¤Ï°Ê²¼¤Î¤è¤¦¤Ê¤³¤È¤â´Êñ¤Ë¤Ç¤­¤ë µ¡Ç½¤òÄ󶡤·¤Æ¤¤¤ë:

¤³¤ÎWeb ¥Ú¡¼¥¸¤Ç¤Ïawk¸À¸ì¤½¤Î¤â¤Î¤Ë¤Ä¤¤¤Æ¤È¡¢ ¤½¤Î¸ú²ÌŪ¤Ê»È¤¤Êý¤ò¶µ¤¨¤ë¤â¤Î¤Ç¤¢¤ë¡£ cat¤äls(1) ¤Î¤è¤¦¤Ê´ðËÜŪ¤Ê¥·¥¹¥Æ¥à¥³¥Þ¥ó¥É¤ä¡¢ Æþ½ÐÎÏ¥ê ¥À¥¤¥ì¥¯¥È¤ä¥Ñ¥¤¥×¤Î¤è¤¦¤Ê´ðËÜŪ¤Ê¥·¥§¥ë¤Îµ¡Ç½¤Ä¤¤¤Æ´·¤ì¿Æ¤·¤ó¤Ç¤¤¤¿¤Û¤¦¤¬¤è¤¤¡£

awk¸À¸ì¤Î½èÍý·Ï¤Ï¿¤¯¤Î°Û¤Ê¤ë´Ä¶­¤Ë¤ª¤¤¤Æ»ÈÍѲÄǽ¤Ç¤¢¤ë¡£ ¤³¤ÎWeb ¥Ú¡¼¥¸¤Ç¤Ï°ìÈ̤Ëawk¸À¸ìÁ´È̤ˤĤ¤¤Æ¤ÎÀâÌÀ¤ò¹Ô¤¤¡¢ ƱÍÍ¤Ë gawk(which stands for "GNU Awk") ¤È¸Æ¤Ð¤ì¤ë¤¢¤ëÆÃÄê¤Îawk¤Î¼ÂÁõ¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤ò¹Ô¤¦¡£ gawk¤Ï¿¤¯¤ÎUNIX¥·¥¹¥Æ¥à¡¢ - ²¼¤Ï80386 ÅëºÜ¤ÎPC¥Ù¡¼¥¹¤Î¥³¥ó¥Ô¥å¡¼¥¿¤«¤é¡¢ ¾å¤ÏCray¤Î¤è¤¦¤ÊÂ礭¤Ê¥·¥¹¥Æ¥à¤Ë¤¤¤¿¤ë¤Þ¤Ç - ¤Ç²Ôư¤·¤Æ¤¤¤ë¡£ gawk¤Ï¤Þ¤¿Mac OS X¤ä¡¢MS-DOS¤äOS/2¤¬Æ°ºî¤¹¤ëPC¡¢Atari¡¢ Amiga¤Ê¤É¤Î¥Þ¥¤¥¯¥í¥³¥ó¥Ô¥å¡¼¥¿¡¢BeOS¡¢Tandem D20¡¢¤½¤·¤ÆVMS¤Ë¤â°Ü¿¢¤µ¤ì¤Æ¤¤¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

awk ¤È gawk ¤ÎÎò»Ë

Recipe For A Programming Language

1 part egrep

1 part snobol

2 parts ed

3 parts C

Blend all parts well using lex and yacc. Document minimally and release.

After eight years, add another part egrep and two more parts C. Document very well and release.

awk¤Î̾Á°¤Ï¤½¤Î³«È¯¼Ôã¤Î̾Á°¡¢Alfred V. Aho, Peter J. Weinberger ¤½¤·¤Æ Brian W. Kernighan¤«¤éÍè¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£ awk ¤Î¥ª¥ê¥¸¥Ê¥ë¥Ð¡¼¥¸¥ç¥ó¤Ï1977ǯ¤ËAT&T¤Î¥Ù¥ë¸¦µæ½ê¤Ç³«È¯¤µ¤ì¤¿¡£ 1985ǯ¤Ë¤Ï¥æ¡¼¥¶¡¼ÄêµÁ´Ø¿ô¡¢Ê£¿ô¤ÎÆþÎÏ¥¹¥È¥ê¡¼¥à¡¢ ưŪÀµµ¬É½¸½¤ÎƳÆþ¤Ë¤è¤Ã¤Æ¤è¤ê¶¯ÎÏ¤Ê¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤È¤Ê¤Ã¤¿¥Ð¡¼¥¸¥ç¥ó¤¬³«È¯¤µ¤ì¤¿¡£ ¤³¤Î¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Ï°ìÈÌŪ¤Ë¤Ï UNIX System V Release 3.1¤Ç»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£ System V Release 4¤Ç¤Î¿· awk ¤Ç¤Ï´ö¤Ä¤«¤Î¿·¤·¤¤µ¡Ç½Äɲäȡ¢ ¸À¸ì¤Î"°Å¤¤¶ù"¤ò¤­¤ì¤¤¤Ë¤¹¤ëºî¶È¤¬¹Ô¤ï¤ì¤¿¡£ POSIX¤Î¥³¥Þ¥ó¥É¸À¸ì¤ª¤è¤Ó¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Îɸ½à¤Ï gawk¤Î¥Ç¥¶¥¤¥Ê¡¼¤È¥ª¥ê¥¸¥Ê¥ë¤ò³«È¯¤·¤¿¥Ù¥ë¸¦µæ½ê¤Îawk ³«È¯¼Ô¤ÎξÊý¤«¤é¤Î¥Õ¥£¡¼¥É¥Ð¥Ã¥¯¤¬È¿±Ç¤µ¤ì¤Æ¤¤¤ë¡£

Paul Rubin¤Ï1986ǯ¤ËGNU¤Ë¤è¤ë¼ÂÁõ¤Ç¤¢¤ëgawk¤òºîÀ®¤·¤¿¡£ Jay Fenlason¤¬¤½¤ì¤òRichard Stallman¤Î¥¢¥É¥Ð¥¤¥¹¤ò¼õ¤±¤Ä¤Ä´°À®¤·¤¿¡£ John Woods¤Ï¥³¡¼¥É¤Î°ìÉôʬ¤Ë´óÍ¿¤·¤¿¡£ 1988ǯ¤È1989ǯ¤Ë¡¢David Trueman¤Ï¤ï¤¿¤·(Arnold Robbins)¤Î½õ¤±¤Î¸µ¤Ë gawk*¤Ë¿·¤·¤¤ awk*¤È¤Î¸ß´¹À­¤ò»ý¤¿¤»¤ë¤¿¤á¤Îºî¶È¤ò¤ª¤³¤Ê¤Ã¤¿¡£ 1995ǯº¢¡¢¤ï¤¿¤·¤Ï¼ç¤¿¤ë¥á¥ó¥Æ¥Ê¡¼¤È¤Ê¤Ã¤¿¡£ ¸½ºß¤Î³«È¯¤Î¼ç¤¿¤ëÅÀ¤Ï¥Ð¥°¤Î½¤Àµ¡¢¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤Î¸þ¾å¡¢É¸½à¤ËÂФ¹¤ë½àµò¤Ç¤¢¤ê¡¢ ¤½¤·¤Æ¿ï»þ¿·¤·¤¤µ¡Ç½¤ÎÄɲäò¹Ô¤Ã¤Æ¤¤¤ë¡£

1997ǯ5·î¤Ë¡¢Jürgen Kahrs ¤Ïawk¤Ë¥Í¥Ã¥È¥ï¡¼¥¯¥¢¥¯¥»¥¹¤Îµ¡Ç½¤Î ɬÍ×À­¤ò´¶¤¸¡¢¤ï¤¿¤·¤Î¤Á¤ç¤Ã¤È¤·¤¿½õ¤±¤òȼ¤Ã¤Æ gawk¤Ëµ¡Ç½¤òÄɲä·¤¿¡£¤³¤Î¤È¤­¡¢Èà¤Ï TCP/IP Internetworking with gawk ¤È¤¤¤¦¥É¥­¥å¥á¥ó¥È¤â½ñ¤¤¤¿(Ê̤Υɥ­¥å¥á¥ó¥È¡£¤³¤ì¤Ïgawk¤Î ÇÛÉÛ¤Ë´Þ¤Þ¤ì¤Æ¤¤¤ë)¡£Èà¤Î¥³¡¼¥É¤ÏºÇ½ªÅª¤Ëgawk¤Î°ìÉôʬ¤È¤Ê¤ê gawk¤Î¥Ð¡¼¥¸¥ç¥ó 3.1 ¤ÇÅý¹ç¤µ¤ì¤¿¡£

See section gawk ¤ËÂФ¹¤ë¼çÍפʹ׸¥¼Ô¤¿¤Á, for a complete list of those who made important contributions to gawk.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

0.1 A Rose by Any Other Name

awk¸À¸ì¤Ï²¿Ç¯¤Ë¤âÅϤäÆÈ¯Å¸¤·¤Æ¤­¤¿¡£ ¤½¤Î¾Ü¤·¤¤ÀâÌÀ¤Ïawk ¸À¸ì¤Î¿Ê²½¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë¡£ ¤³¤ÎWeb ¥Ú¡¼¥¸¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¸À¸ì¤Ï¤Û¤È¤ó¤É¤¬ "new awk"(nawk)¤È¤·¤ÆÃΤé¤ì¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë¡£

¤³¤Î¤¿¤á¡¢Â¿¤¯¤Î¥·¥¹¥Æ¥à¤Ç¤ÏÊ£¿ô¤Î¥Ð¡¼¥¸¥ç¥ó¤Îawk¤¬Â¸ºß¤¹¤ë¡£ °ìÉô¤Î¥·¥¹¥Æ¥à¤Ï¥ª¥ê¥¸¥Ê¥ë¥Ð¡¼¥¸¥ç¥ó¤Îawk¸À¸ì¤Î¥¤¥ó¥×¥ê¥á¥ó¥È¤Ç¤¢¤ë awk¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤È¡¢¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Ç¤¢¤ënawk¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»ý¤Ã¤Æ¤¤¤ë¡£ ¾¤Î°ìÉô¤Ï"¸Å¤¤awk"¤Ç¤¢¤ëoawk¤ò»ý¤Ã¤Æ¤¤¤ë¡£ »Ä¤ê¤Î¤â¤Î¤Ï°ì¤Ä¤Î¤ß¡¢Ä̾ï¤Ï¿·¤·¤¤¤Û¤¦¤òawk¤È¤·¤Æ»ý¤Ã¤Æ¤¤¤ë¡£ (2)

½ÅÍפʻö¤Ï¡¢¤³¤Î¤³¤È¤Ë¤è¤Ã¤Æ¤¢¤Ê¤¿¤¬½ñ¤¤¤¿¥×¥í¥°¥é¥à¤ò¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Î awk¤Ç¼Â¹Ô¤¹¤ì¤Ð¤è¤¤¤«¤È¤¤¤¦¤³¤È¤òÃΤ뤳¤È¤¬Æñ¤·¤¯¤Ê¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¤³¤³¤Ç»ä㤬¤Ç¤­¤ëºÇÁ±¤Î¥¢¥É¥Ð¥¤¥¹¤Ï¡¢¤¢¤Ê¤¿¤Î¥·¥¹¥Æ¥à¤Î¥É¥­¥å¥á¥ó¥È¤ò³Î¤«¤á¤ÆÍߤ·¤¤¡£ ¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£gawk¤ËÂФ·¤Æ¤ÈƱ¤¸¤¯¤é¤¤ awk, oawk, nawk¤ò¸«¤ÆÍߤ·¤¤¡£ ¤¢¤Ê¤¿¤¬»È¤Ã¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ë¤Ï¿·¤·¤¤¥Ð¡¼¥¸¥ç¥ó¤Îawk¤¬¤¢¤ê¡¢ ¤¢¤Ê¤¿¤Î¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤È¤­¤Ë¤Ï¤½¤ì¤ò»È¤Ã¤¿¤Û¤¦¤¬¤è¤¤¶ÉÌ̤¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤ (¤â¤Á¤í¤ó¡¢¤¢¤Ê¤¿¤¬ ¤³¤ÎWeb ¥Ú¡¼¥¸¤òÆÉ¤á¤Ð¡¢gawk¤ò»ý¤Äµ¡²ñ¤¬¤¢¤ë¤ï¤±¤À!)¡£

¤³¤ÎWeb ¥Ú¡¼¥¸¤òÄ̤¸¤Æ¡¢POSIX¤Ç¤Îawk¤Î¼ÂÁõ¤¬È÷¤¨¤Æ¤¤¤ë¸À¸ì¤Îµ¡Ç½¤ò ¼¨¤¹¤È¤­¤Ë¤Ï¡¢Ã±½ã¤Ëawk¤È¤¤¤¦¸ì¤ò»È¤¦¡£ GNU¤Ç¤Î¼ÂÁõ¤ËÆÃÍ­¤Êµ¡Ç½¤ò¼¨¤¹¤È¤­¤Ë¤Ïgawk¤È¤¤¤¦¸ì¤ò»ÈÍѤ¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

0.2 ¤³¤ÎËܤò»È¤¦

awk¤È¤¤¤¦¸ì¤ÏÆÃÄê¤Î¥×¥í¥°¥é¥à¤ò¼¨¤·¤Æ¤¤¤ë¤ÈƱ»þ¤Ë ¤¢¤Ê¤¿¤¬¼Â¹Ô¤·¤è¤¦¤È¤·¤Æ¤¤¤ë¥×¥í¥°¥é¥à¤Î¸À¸ì¤ò¼¨¤·¤Æ¤¤¤ë¡£ µ¤¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ë¾ì¹ç¤Ë¤Ï¡¢¥×¥í¥°¥é¥à¤ò"awk¥æ¡¼¥Æ¥£¥ê¥Æ¥£"¤È¸Æ¤Ó¡¢ ¤â¤¦°ìÊý¤ò"awk¸À¸ì"¤È¸Æ¤Ö¡£ gawk¤È¤¤¤¦¸ì¤ÏGNU¥×¥í¥¸¥§¥¯¥È¤¬³«È¯¤·¤¿awk¤òɽ¤·¤Æ¤¤¤ë¡£ ¤³¤ÎWeb ¥Ú¡¼¥¸¤ÎÌÜŪ¤Ïawk¸À¸ì¤È¡¢ awk¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Î¼Â¹Ô¤Î»ÅÊý¤ÎξÊý¤òÀâÌÀ¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£

¤³¤ÎWeb ¥Ú¡¼¥¸¤Î¼ç¤ÊÌÜŪ¤ÏPOSIX¤Îɸ½à¤ÇÄê¤á¤é¤ì¤Æ¤¤¤ëawk ¤Îµ¡Ç½¤òÀâÌÀ¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£ ¤½¤ì¤Ï¤¢¤ëÆÃÄê¤Î¼ÂÁõ¤ägawk¤òÀâÌÀ¤·¤Æ¤¤¤ë¤È¤­¤Ë¹Ô¤Ã¤Æ¤¤¤ë¡£ ¤½¤ÎÀâÌÀ¤Ç¤ÏƱÍͤˡ¢gawk¤È¾¤Îawk¤Î¼ÂÁõ¤È¤Î½ÅÍפʺ¹°ã¤ò ÀâÌÀ¤¹¤ë¤³¤È¤ò»î¤ß¤ë¡£(3) ¤µ¤é¤Ë¡¢POSIXɸ½à¤Îawk¤Ë¤Ï¤Ê¤¤¤è¤¦¤Ê gawk¤Îµ¡Ç½¤òÀâÌÀ¤¹¤ë¡£

¤³¤ÎWeb ¥Ú¡¼¥¸¤Ï¥Á¥å¡¼¥È¥ê¥¢¥ë¤È¥ê¥Õ¥¡¥ì¥ó¥¹¤ÎξÊý¤ÎÌòÌܤò²Ì¤¿¤¹¤È¤¤¤¦ Æñ¤·¤¤Î©¾ì¤Î¤â¤Î¤Ç¤¢¤ë¤¬¡¢¤â¤·¡¢¤¢¤Ê¤¿¤¬½é¿´¼Ô¤Ê¤é¤ÐÆñ¤·¤¹¤®¤ë¤È´¶¤¸¤ë¤è¤¦¤Ê µ­½Ò¤ÎÉôʬ¤Ï¹¥¤­¤ËÆÉ¤ßÈô¤Ð¤·¤Æ¤«¤Þ¤ï¤Ê¤¤¡£¤½¤¦¤¤¤Ã¤¿Éôʬ¤Ï¥¨¥­¥¹¥Ñ¡¼¥È¥æ¡¼¥¶¡¼¤È¡¢ ¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Î¥ª¥ó¥é¥¤¥óInfo ¥Ð¡¼¥¸¥ç¥ó¤Ç»²¾È¤µ¤ì¤ë¤¿¤á¤Î¤â¤Î¤À¤«¤é¤À¡£

There are subsections labelled as Advanced Notes scattered throughout the Web ¥Ú¡¼¥¸. They add a more complete explanation of points that are relevant, but not likely to be of interest on first reading. All appear in the index, under the heading ``advanced features.''

Most of the time, the examples use complete awk programs. In some of the more advanced sections, only the part of the awk program that illustrates the concept currently being described is shown.

While this Web ¥Ú¡¼¥¸ is aimed principally at people who have not been exposed to awk, there is a lot of information here that even the awk expert should find useful. In particular, the description of POSIX awk and the example programs in A Library of awk ´Ø¿ô, and in Practical awk Programs, should be of interest.

Getting Started with awk¤Ë¤Ïawk¤ò»È¤¤»Ï¤á¤ë¤Ë¤¢¤¿¤Ã¤Æ ÃΤäƤª¤¯É¬Íפ¬¤¢¤ë¤³¤È¤Î³µÍפ¬¤¢¤ë¡£

Àµµ¬É½¸½¤Ç¤Ï°ìÈÌŪ¤ÊÀµµ¬É½¸½¤ò¾Ò²ð¤·¡¢¤½¤ì¤Ë²Ã¤¨¤Æ POSIX awk¤ägawk¤Ë¸ÇÍ­¤Î¤â¤Î¤ò¾Ò²ð¤·¤Æ¤¤¤ë¡£

ÆþÎÏ¥Õ¥¡¥¤¥ë¤òÆÉ¤à¤Ç¤Ïawk¤¬¤É¤Î¤è¤¦¤Ë¥Ç¡¼¥¿¤òÆÉ¤à¤Î¤«¤ò ÀâÌÀ¤·¤Æ¤¤¤ë¡£ ¥ì¥³¡¼¥É¤È¥Õ¥£¡¼¥ë¥É¤Î¥³¥ó¥»¥×¥È¤òƳÆþ¤·¡¢getline ¥³¥Þ¥ó¥É¤Ë¤Ä¤¤¤Æ¤âÀâÌÀ¤·¤Æ¤¤¤ë¡£ Æþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥·¥ç¥ó¤ÏºÇ½é¤Ë¤³¤³¤ÇÀâÌÀ¤·¤Æ¤¤¤ë¡£

Printing Output¤Ç¤Ïawk¥×¥í¥°¥é¥à¤¬ ¤É¤Î¤è¤¦¤Ëprint¤äprintf¤ò»È¤Ã¤Æ½ÐÎϤò ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¤Î¤«ÀâÌÀ¤·¤Æ¤¤¤ë¡£

¼°¤Ç¤Ï¥×¥í¥°¥é¥à¤Ë¤ª¤¤¤Æ´ðËÜŪ¤Ê¤â¤Î¤Ç¤¢¤ë ¼°¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤ë¡£

¥Ñ¥¿¡¼¥ó¡¢¥¢¥¯¥·¥ç¥ó¡¢ÊÑ¿ô¤Ç¤Ï ¥ì¥³¡¼¥É¤Î¥Þ¥Ã¥Á¥ó¥°¤Î¤¿¤á¤Î¥Ñ¥¿¡¼¥ó¤ä ¥ì¥³¡¼¥É¤¬¥Þ¥Ã¥Á¤·¤¿¤È¤­¤Î¥¢¥¯¥·¥ç¥ó¤ò¤É¤Î¤è¤¦¤Ëµ­½Ò¤¹¤ë¤«¤ò ÀâÌÀ¤·¡¢awk¤ägawk¤¬»È¤¦ÁȤ߹þ¤ßÊÑ¿ô¤Ë¤Ä¤¤¤Æ¤â ½Ò¤Ù¤Æ¤¤¤ë¡£

awk ¤Ë¤ª¤±¤ëÇÛÎó¤Ç¤Ïawk¤Î¤¿¤À°ì¤Ä¤Î¥Ç¡¼¥¿¹½Â¤¤Ç¤¢¤ë Ï¢ÁÛÇÛÎó¤Ë¤Ä¤¤¤Æ¥«¥Ð¡¼¤·¤Æ¤¤¤ë¡£ ÇÛÎó¤ÎÍ×ÁǤäÇÛÎóÁ´ÂΤòºï½ü¤¹¤ë¤³¤È¤ä gawk¤ÇÇÛÎó¤ò¥½¡¼¥È¤¹¤ë¤³¤È¤Ë¤Ä¤¤¤Æ¤â½Ò¤Ù¤Æ¤¤¤ë¡£

´Ø¿ô¤Ç¤Ïawk¤Ègawk¤ÇÄ󶡤µ¤ì¤Æ¤¤¤ë ÁȤ߹þ¤ß´Ø¿ô¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤Æ¡¢¤µ¤é¤Ë¼«Ê¬ÍѤΠ´Ø¿ô¤ÎÄêµÁ¤Î»ÅÊý¤Ë¤Ä¤¤¤Æ¤â½Ò¤Ù¤Æ¤¤¤ë¡£

gawk¤Î¹ñºÝ²½¤Ç¤Ï¡¢ ¤Î°Û¤Ê¤ë¸À¸ì¤Ø¤Î¼Â¹Ô»þ¤Î¥×¥í¥°¥é¥à¥á¥Ã¥»¡¼¥¸¤Î gawk¤ÎËÝÌõµ¡Ç½¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤Æ¤¤¤ë¡£

gawk ¤Î¹âÅ٤ʵ¡Ç½¤Ç¤Ï¡¢ gawk¤Ë¸ÇÍ­¤Î´ö¤Ä¤«¤ÎÀèüŪµ¡Ç½¤Ç¤¢¤ë ¾¤Î¥×¥í¥»¥¹¤È¤Î´Ö¤ÎÁÐÊý¸þÄÌ¿®¡¢TCP/IP¥Í¥Ã¥È¥ï¡¼¥­¥ó¥°¡¢ awk¥×¥í¥°¥é¥à¤Î¥×¥í¥Õ¥¡¥¤¥ê¥ó¥°¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤ë¡£

Running awk and gawk¤Ç¤Ï¡¢gawk¤Î¼Â¹Ô¤Î»ÅÊý¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤Î°ÕÌ£¡¢awk¥×¥í¥°¥é¥à ¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Î¸«¤Ä¤±Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤ë¡£

A Library of awk ´Ø¿ô¤ÈPractical awk Programs¤Ç¤Ï¡¢ ¿ô¿¤¯¤Î¥µ¥ó¥×¥ëawk¥×¥í¥°¥é¥à¤ò½¸¤á¤Æ¤¤¤ë¡£ ¤³¤³¤òÆÉ¤à¤³¤È¤Ç¤¢¤Ê¤¿¤¬awk¤ò»È¤Ã¤Æ¼ÂºÝ¤ÎÌäÂê¤ò ²ò·è¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡£

awk ¸À¸ì¤Î¿Ê²½¤Ç¤Ï¡¢awk¸À¸ì¤¬ºÇ½é¤Î¥ê¥ê¡¼¥¹¤«¤é ¤É¤Î¤è¤¦¤ËȯŸ¤·¤Æ¤­¤¿¤Î¤«¤òÀâÌÀ¤¹¤ë¡£¤Þ¤¿¡¢gawk¤¬ µ¡Ç½¤ò³ÈÄ¥¤·¤Æ¤­¤¿·Ð°Þ¤Ë¤Ä¤¤¤Æ¤â½Ò¤Ù¤ë¡£

Installing gawk¤Ç¤Ï¡¢gawk¤ÎÆþ¼ê¤Î»ÅÊý¡¢ Unix¤Ç¤Î¥³¥ó¥Ñ¥¤¥ë¤Î»ÅÊý¡¢ÈóUnix¥·¥¹¥Æ¥à¤Ç¤Î¥³¥ó¥Ñ¥¤¥ë¤Î»ÅÊý¤È »È¤¤Êý¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£¤Þ¤¿¡¢gawk¤Î¥Ð¥°¤ÎÊó¹ð¤Î »ÅÊý¤ä¾¤Î»°¤Ä¤Î¼«Í³¤ËÆþ¼ê¤¹¤ë¤³¤È¤Î¤Ç¤­¤ëawk½èÍý·Ï¤Ë ¤Ä¤¤¤Æ¤â½Ò¤Ù¤Æ¤¤¤ë¡£

Implementation Notes¤Ç¤Ï¡¢ gawk¸ÇÍ­¤Î³ÈÄ¥¤ÎÍÞÀ©¤Î»ÅÊý¡¢ gawk¤Ø¤Î¹×¸¥¤ÎÊýË¡¡¢ ³ÈÄ¥¥é¥¤¥Ö¥é¥ê¤Îµ­½Ò¤Î»ÅÊý¡¢ ¤¤¤¯¤Ä¤«¤Îgawk¤Î³«È¯¤Ë¤ª¤±¤ë¾­Íè¤ÎÊý¸þÀ­ ¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤Æ¤¤¤ë¡£

Basic Programming Concepts¤Ç¤Ï¡¢ ¥³¥ó¥Ô¥å¡¼¥¿¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤¢¤Þ¤ê¿Æ¤·¤ó¤Ç¤¤¤Ê¤¤¿Í¤¿¤Á¸þ¤±¤Ë Èó¾ï¤ËÂç¤Þ¤«¤Ë¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤ë¡£ ¤Þ¤¿¡¢ÉâÆ°¾®¿ôÅÀ¿ô¤Ë´Ø¤¹¤ë¤³¤È¤¬¤é¤Ë¤Ä¤¤¤Æ´ö¤Ä¤«¤ÎµÄÏÀ¤ò ¤Þ¤È¤á¤Æ¤¤¤ë¡£

ÍѸ콸¤Ë¤Ï¡¢ ¤¹¤Ù¤Æ¤Ç¤Ï¤Ê¤¤¤±¤ì¤É¤â¤³¤ÎËܤòÄ̤·¤Æ»È¤ï¤ì¤Æ¤¤¤ëÆÃĹŪ¤Êñ¸ì¤Î ÄêµÁ¤ò½¸¤á¤Æ¤¤¤ë¡£ ¤â¤·¸«´·¤ì¤Ê¤¤Ã±¸ì¤ò¸«¤Ä¤±¤¿¤é¡¢¤³¤³¤Ç³Îǧ¤·¤Æ¤ß¤ÆÍߤ·¤¤¡£

GNU General Public License¤ÈGNU Free Documentation License¤Ë¤Ï gawk¤Î¥½¡¼¥¹¥³¡¼¥É¤È¡¢ ¤³¤ÎDOCUMENT¤ò¥«¥Ð¡¼¤·¤Æ¤¤¤ë¥é¥¤¥»¥ó¥¹¤¬¤¢¤ë (GNU °ìÈ̸ø½°ÍøÍѵöÂú·ÀÌó½ñ¤ÈGNU ¥Õ¥ê¡¼Ê¸½ñÍøÍѵöÂú·ÀÌó½ñ¤Ï¤½¤ì¤¾¤ì¤Î ÆüËܸ컲¹ÍÌõ)¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

0.3 Typographical Conventions

This Web ¥Ú¡¼¥¸ is written using Texinfo, the GNU documentation formatting language. A single Texinfo source file is used to produce both the printed and online versions of the documentation. Because of this, the typographical conventions are slightly different than in other books you may have read.

Examples you would type at the command-line are preceded by the common shell primary and secondary prompts, `$' and `>'. Output from the command is preceded by the glyph ``-|''. This typically represents the command's standard output. Error messages, and other output on the command's standard error, are preceded by the glyph ``error-->''. For example:

 
$ echo hi on stdout
-| hi on stdout
$ echo hello on stderr 1>&2
error--> hello on stderr
  

In the text, command names appear in this font, while code segments appear in the same font and quoted, `like this'. Some things are emphasized like this, and if a point needs to be made strongly, it is done like this. The first occurrence of a new term is usually its definition and appears in the same font as the previous occurrence of ``definition'' in this sentence. ¥Õ¥¡¥¤¥ë̾s are indicated like this: `/path/to/ourfile'.

Characters that you type at the keyboard look like this. In particular, there are special characters called ``control characters.'' These are characters that you type by holding down both the CONTROL key and another key, at the same time. For example, a Ctrl-d is typed by first pressing and holding the CONTROL key, next pressing the d key and finally releasing both keys.

Dark Corners

Dark corners are basically fractal --- no matter how much you illuminate, there's always a smaller but darker one.
Brian Kernighan

Until the POSIX standard (and The Gawk Manual), many features of awk were either poorly documented or not documented at all. Descriptions of such features (often called ``dark corners'') are noted in this Web ¥Ú¡¼¥¸ with ``(d.c.)''. They also appear in the index under the heading ``dark corner.''

As noted by the opening quote, though, any coverage of dark corners is, by definition, something that is incomplete.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

GNU ¥×¥í¥¸¥§¥¯¥È¤È¤³¤ÎËÜ

¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ºâÃÄ(Free Software Foundation, FSF)¤Ï Èó±ÄÍøÃÄÂΤǡ¢¼«Í³¤ËÇÛÉÛ¤¹¤ë¤³¤È¤Î¤Ç¤­¤ë¥½¥Õ¥È¥¦¥§¥¢¤ÎºîÀ®¤ÈÇÛÉÛ¤ò ÌÜŪ¤È¤·¤Æ¤¤¤ë¡£Emacs ¥¨¥Ç¥£¥¿¡¼¤Î¥ª¥ê¥¸¥Ê¥ë¤Îºî¼Ô¤Ç¤¢¤ë Richard M. Stallman ¤Ë¤è¤Ã¤ÆÀßΩ¤µ¤ì¤¿¡£ GNU Emacs ¤Ïº£ÆüºÇ¤â¹­¤¯»È¤ï¤ì¤Æ¤¤¤ë Emacs¤Ç¤¢¤ë¡£

GNU(4) ¥×¥í¥¸¥§¥¯¥È¤Ï¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ºâÃĤˤè¤Ã¤Æºî¶È¤¬¹Ô¤ï¤ì¤Æ¤¤¤ë ´°Á´¤Ê¡¢¼«Í³¤ËÇÛÉÛ¤¹¤ë¤³¤È¤Î¤Ç¤­¤ëPOSIX¥³¥ó¥Ñ¥Á¥Ö¥ë¤Ê ¥³¥ó¥Ô¥å¡¼¥Æ¥£¥ó¥°´Ä¶­¤ÎºîÀ®¤òÌܻؤ·¤¿¤â¤Î¤Ç¤¢¤ë FSF¤Ï"GNU General Public License-- GNU°ìÈ̸øÍ­µöÂú --" (¤Þ¤¿¤ÏGPL)¤ò»È¤Ã¤Æ¡¢ ¤½¤Î¥½¥Õ¥È¥¦¥§¥¢¤Î¥½¡¼¥¹¥³¡¼¥É¤¬¾ï¤Ë¥¨¥ó¥É¥æ¡¼¥¶¡¼¤Ë ¤È¤Ã¤ÆÆþ¼ê²Äǽ¤Ê¾õÂ֤ˤ¢¤ë¤³¤È¤òÊݾڤ·¤Æ¤¤¤ë¡£ GPL¤Î¥³¥Ô¡¼¤Ï¤³¤ÎNo value for DCOUMENT¤Ë¤â´Þ¤Þ¤ì¤Æ¤¤¤ë (see section GNU General Public License)¡£ GPL¤ÏC¤Ç½ñ¤«¤ì¤Æ¤¤¤ëgawk¤Î¥½¡¼¥¹¥³¡¼¥É¤ËŬÍѤµ¤ì¤Æ¤¤¤ë¡£ FSF¤äGNU¥×¥í¥¸¥§¥¯¥È¤Ë¤Ä¤¤¤Æ¤Î¾ðÊó¤ò¥ª¥ó¥é¥¤¥ó¤Ç¤â¤Ã¤È¸«¤Ä¤±¤ë¤Ë¤Ï the GNU Project's home page¤ò¸«¤ÆÍߤ·¤¤¡£ ¤³¤Î¥É¥­¥å¥á¥ó¥È(¤Î¸¶Ê¸)¤Ï their web site¤Ë¤â¤¢¤ë¡£

¥·¥§¥ë¡¢¥¨¥Ç¥£¥¿¡¼(Emacs)¡¢¹âÅ٤ʰܿ¢À­¤òÈ÷¤¨¤¿C¡¢C++¡¢Objective-C ¥³¥ó¥Ñ¥¤¥é¡¼¡¢ ¥·¥ó¥Ü¥ê¥Ã¥¯¥Ç¥Ð¥Ã¥¬¡¼¡¢¤½¤Î¾(gawk¤Î¤è¤¦¤Ê) Âç¾®¤¿¤¯¤µ¤ó¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤¬ ¤¹¤Ç¤Ë´°À®¤·¤Æ¤ª¤ê¡¢¼«Í³¤ËÆþ¼ê¤Ç¤­¤ë¡£ GNU¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Î¥«¡¼¥Í¥ë(HURD)¤Ï´û¤Ë¥ê¥ê¡¼¥¹¤µ¤ì¤Æ¤¤¤ë¡£ ¤·¤«¤·¡¢¤³¤ì¤Ï¤Þ¤À³«È¯¤Î½é´üÃʳ¬¤Ë¤È¤É¤Þ¤Ã¤Æ¤¤¤ë¡£

GNU¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Î³«È¯¤¬¤µ¤é¤Ë¿Ê¤à¤Þ¤Ç¤Ï¡¢ ¼«Í³¤ËÇÛÉÛ¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢80386¡¢DEC alpha¡¢ Sun SPARC¡¢IBM S/390 ¤Ê¤É¤Çưºî¤¹¤ëUNIX¤Ë»÷¤¿¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¤¢¤ëGNU/Linux¤ò»È¤¦¤Î¤¬¤è¤¤¤À¤í¤¦ (5)¡£ GNU/Linux¤Ë´Ø¤·¤Æ¤Ï¿¤¯¤Î½ñÀÒ¤¬¤¢¤ê¡¢ ¤½¤ÎÃæ¤Î°ì¤Ä¤ËMatt Welsh¤Ë¤è¤ë¼«Í³¤ËÆþ¼ê¤Ç¤­¤ë(freely availabke¡Ë¤Ê Linux Installation and Getting Started¤¬¤¢¤ë¡£ ¥³¥ó¥Ô¥å¡¼¥¿¥¹¥È¥¢¤äCD-ROM¤¬ÅºÉÕ¤µ¤ì¤¿Linux¤Ë´Ø¤¹¤ë½ñÀÒ¤òÄ̤¸¡¢ ¿¤¯¤Î GNU/LinuxÇÛÉÛ¤¬Æþ¼ê²Äǽ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ (Æó¤Ä¤Î¼«Í³¤ËÆþ¼ê²Äǽ¤ÊUnix¥é¥¤¥¯¤Ê80386Åù¸þ¤±¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¡¢ NetBSD¤ÈFreeBSD¤¬¤¢¤ë¡£¤³¤ì¤é¤ÏξÊý¤È¤â4.4-Lite Berkeley Software Distribution ¤Ë´ð¤Å¤¤¤¿¤â¤Î¤Ç¤¢¤ê¡¢¤½¤ì¤éÍѤÎawk¤È¤·¤Æ gawk¤ÎºÇ¿·¥Ð¡¼¥¸¥ç¥ó¤¬»ÈÍѤµ¤ì¤Æ¤¤¤ë)¡£

º£¤¢¤Ê¤¿¤¬ÆÉ¤ó¤Ç¤¤¤ë¤³¤ÎWeb ¥Ú¡¼¥¸¤Ï¥Õ¥ê¡¼¤Ç¤¢¤ë¡£ ¤³¤³¤Ë¤¢¤ë¾ðÊó¤ä¡¢¤³¤ÎWeb ¥Ú¡¼¥¸¤Î¸µ¤È¤Ê¤Ã¤¿ gawk¤ËÉտ魯¤ëµ¡³£ÆÉ¤ß¼è¤ê²Äǽ¤Ê¥½¡¼¥¹¥³¡¼¥É¤Ï ï¤â¤¬¼«Í³¤ËÆþ¼ê¤Ç¤­¤ë¤â¤Î¤Ç¤¢¤ê¡¢ ¤½¤·¤ÆÃ¯¤â¤¬¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤ò¹¥¤­¤Ê¤À¤±¥³¥Ô¡¼¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë (¤Á¤ç¤Ã¤È»þ´Ö¤ò¼è¤Ã¤Æ GNU Free Documentation License¤ÇFree Documentation License¤ò ¥Á¥§¥Ã¥¯¤·¤Æ¤ß¤ÆÍߤ·¤¤¡£ÌõÃí: ÆüËܸìÌõ¤ÏGNU ¥Õ¥ê¡¼Ê¸½ñÍøÍѵöÂú·ÀÌó½ñ)¡£

¼«Ê¬¤Ç°õºþ¤¹¤ë¤è¤ê¤â¡¢À½Ëܤµ¤ì¤¿ËܤÎÊý¤¬ÆÉ¤ß¤ä¤¹¤¤¤·»È¤¤¤ä¤¹¤¤¡£ ¤½¤ì¤Ë²Ã¤¨¤Æ¡¢¤³¤ÎËܤÎÇä¾å¤Ë¤è¤ëÍø±×¤ÏFSF¤¬ ¤è¤ê°ìÁؤμ«Í³¤Ê¥½¥Õ¥È¥¦¥§¥¢(free software)¤ò³«È¯¤¹¤ë½õ¤±¤È¤Ê¤ë¡£

¤³¤ÎWeb ¥Ú¡¼¥¸¤½¤ì¼«¿È¤Ï°ÊÁ°¤«¤é¤¢¤Ã¤¿¤¤¤¯¤Ä¤«¤ÎÈǤòÄ̤·¤Æ¤Î·ë²Ì¤Ç¤¢¤ë¡£ Paul Rubin¤Ï The GAWK Manual¤ÎÈó¾ï¤Ë½é´ü¤Î¥É¥é¥Õ¥È¤ò½ñ¤¤¤¿¤¬ ¤½¤ì¤Ï40¥Ú¡¼¥¸¤Û¤É¤Î¤â¤Î¤À¤Ã¤¿¡£ Diane Close ¤È Richard Stallman¤Ï¤½¤ì¤ò²þÎɤ·¡¢90¥Ú¡¼¥¸¤Û¤É¤Î¤â¤Î ¤Ë¤Ê¤Ã¤¿¤¬¥ª¥ê¥¸¥Ê¥ë¤Î``¸Å¤¤''¥Ð¡¼¥¸¥ç¥ó¤Îawk¤Ë´Ø¤¹¤ëÀâÌÀ¤¬ ¤Û¤È¤ó¤É¤Ê¤«¤Ã¤¿¡£

¤ï¤¿¤·¤Ï1988ǯ¤Î½©¤Ë¤½¤Î¥Ð¡¼¥¸¥ç¥ó¤òËܤ˺î¶È¤ò»Ï¤á¤¿¡£ FSF¤Ï¤¤¤¯¤Ä¤«¤Îpreliminary ¥Ð¡¼¥¸¥ç¥ó (0.x¤È¤¤¤¦¿ô»ú¤Î¤Ä¤¤¤¿¤â¤Î) ¤ò½ÐÈǤ·¤¿¡£ 1996ǯ¤Ë¡¢gawk 3.0.0¤È¶¦¤Ë Âè1ÈǤ¬¥ê¥ê¡¼¥¹¤µ¤ì¤¿¡£ FSF¤Ï¤½¤ÎºÇ½é¤ÎÆó¤Ä¤ÎÈǤòThe GNU Awk User's Guide¤È¤¤¤¦ ¥¿¥¤¥È¥ë¤Ç½ÐÈǤ·¤¿¡£

gawk ¤ÇÇÛÎó¤ÎÃͤ䟤¨»ú¤ò¥½¡¼¥È¤¹¤ë, as well as gawk ¤Î¥Ó¥Ã¥ÈÁàºî´Ø¿ô, gawk¤Î¹ñºÝ²½, and also gawk ¤Î¹âÅ٤ʵ¡Ç½, and ¿·¤¿¤ÊÁȤ߹þ¤ß´Ø¿ô¤ògawk¤ËÄɲ乤ë. ¤³¤ÎÈǤǤϴðËÜŪ¤ÊÉôʬ¤ÏÂè°ìÈǤΤâ¤Î¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤ë¤¬¡¢ gawk¤Î¥Ð¡¼¥¸¥ç¥ó 3.1¤Ç¤Î ¿·¤·¤¤µ¡Ç½¤ÎÀâÌÀ¤Ê¤É¤¬Äɲäµ¤ì¤Æ¤¤¤ë¡£ gawk ¤ÇÇÛÎó¤ÎÃͤ䟤¨»ú¤ò¥½¡¼¥È¤¹¤ë¡¢ gawk ¤Î¥Ó¥Ã¥ÈÁàºî´Ø¿ô¡¢ gawk¤Î¹ñºÝ²½¡¢ gawk ¤Î¹âÅ٤ʵ¡Ç½¡¢ ¿·¤¿¤ÊÁȤ߹þ¤ß´Ø¿ô¤ògawk¤ËÄɲ乤ë¤Ê¤É¤¬¤½¤¦¤Ç¤¢¤ë¡£

GAWK: Effective AWK Programming¤Ï¿Ê²½¤·¤Ä¤Å¤±¤Æ¤¤¤ë¡£ ÅŻҥС¼¥¸¥ç¥ó¤ÏFSF¤«¤égawk¤È¶¦¤ËÇÛÉÛ¤µ¤ì¤Æ¤¤¤ë¡£ ¤â¤·¤³¤ÎWeb ¥Ú¡¼¥¸¤Ë´Ö°ã¤¤¤ò¸«¤Ä¤±¤¿¤é¡¢¤É¤¦¤«¤½¤ì¤òÃΤ餻¤ÆÍߤ·¤¤! ÌäÂê¤ÎÊó¹ð¤ÎÊýË¡¤ÏSee section ÌäÂêÅÀ¤ä¥Ð¥°¤òÊó¹ð¤¹¤ë¤Ë¤¢¤ë¡£ ¤¢¤ë¤¤¤Ï¡¢½ÐÈǼҵ¤ÉդǤ錄¤·¤Ë¼ê»æ¤ò½ñ¤¤¤ÆÍߤ·¤¤¡£
ÌõÃí: ÆüËܸìÈǤ˴ؤ·¤Æ¤Î´Ö°ã¤¤¤ÏÌõ¼Ô¤Þ¤Ç¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

¹×¸¥¤Î»ÅÊý

GNU awk¤Î¥á¥ó¥Æ¥Ê¡¼¤È¤·¤Æ¡¢¤ï¤¿¤·¤Ï ¸øÅª¤ËÆþ¼ê²Äǽ¤Êawk¥×¥í¥°¥é¥à¤ò½¸¤á»Ï¤á¤¿¡£ ¾ÜºÙ¤Ï ftp://ftp.freefriends.org/arnold/Awkstuff¤ò»²¾È¤Î¤³¤È¡£ ¤â¤·¤¢¤Ê¤¿¤¬ÌÌÇò¤¤awk¥×¥í¥°¥é¥à¤ä gawk³ÈÄ¥¤ò½ñ¤¤¤Æ¡¢¤½¤ì¤òÀ¤³¦¤Î¿Í¡¹¤Èʬ¤«¤Á¹ç¤¤¤¿¤¤¤È »×¤Ã¤¿¤Ê¤é¡¢¤É¤¦¤¾¤ï¤¿¤·(arnold@skeeve.com)¤ËÏ¢Íí¤·¤ÆÍߤ·¤¤¡£ ¥¤¥ó¥¿¡¼¥Í¥Ã¥È¤Ç¤Ç¤­¤ë¤³¤È¤Ïgawk¤ÎÇÛÉÛ¤ò À©¸æ²Äǽ¤Ê¥µ¥¤¥º¤Ë¤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

¼Õ¼­

The GAWK Manual¤Î½é´ü¤Î¥É¥é¥Õ¥È¤Ç¤Ï¡¢°Ê²¼¤Î¤è¤¦¤Ê¼Õ¼­¤¬¤¢¤Ã¤¿¡£

¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤ÎºîÀ®¤Ë¤¢¤¿¤Ã¤Æ¡¢Â¿¤¯¤Î¿Í¡¹¤Î¶¨ÎϤ¬¤¢¤Ã¤¿¡£ Jay Fenlason¤Ï¿¤¯¤Î¥¢¥¤¥Ç¥¢¤È¡¢¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤ò´óÉÕ¤·¤Æ¤¯¤ì¤¿¡£ Richard Mlynarik ¤È Robert Chassell¤Ï¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤ÎÁð¹Æ¤Ë¤Ä¤¤¤ÆÍ­ÍѤʽõ¸À¤ò¤¯¤ì¤¿¡£ UC San Diego¤ÎChemistry Department¤ÎJohn W. Pierce¤Ë¤è¤ë A Supplemental Document for awk¤È¤¤¤¦ÏÀʸ¤Ï awk¤Î¼ÂÁõ¤È¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤ÎξÊý¤Ë´ØÏ¢¤·¤¿´ö¤Ä¤«¤ÎÌäÂêÅÀ¤ò»ØÅ¦¤·¤Æ¤ª¤ê¡¢ ²æ¡¹¤Ë¤È¤Ã¤ÆÍ­±×¤Ç¤¢¤Ã¤¿¡£

¤³¤³¤ÇRichard M. Stallman¤È¡¢Èà¤Î¤è¤êÎɤ­À¤³¦¤Ø¤Î¥Ó¥¸¥ç¥ó¡¢ ¤½¤·¤Æ¥Õ¥ê¡¼¥½¥Õ¥È¥¦¥§¥¢ºâÃĤòÀßΩ¤· GNU¥×¥í¥¸¥§¥¯¥È¤ò³«»Ï¤·¤¿Èà¤Îͦµ¤¤òǧ¤á¤¿¤¤¡£

The following people (in alphabetical order) provided helpful comments on various versions of this book, up to and including this edition. Rick Adams, Nelson H.F. Beebe, Karl Berry, Dr. Michael Brennan, Rich Burridge, Claire Cloutier, Diane Close, Scott Deifik, Christopher (``Topher'') Eliot, Jeffrey Friedl, Dr. Darrel Hankerson, Michal Jaegermann, Dr. Richard J. LeBlanc, Michael Lijewski, Pat Rankin, Miriam Robbins, Mary Sheehan, and Chuck Toporek.

Karl Berry helped significantly with the TeX part of Texinfo. Robert J. Chassell¤ÏTexinfo¤Î»ÈÍѤˤĤ¤¤Æ¤Î½õ¸À¤ò¤·¤Æ¤¯¤ì¤¿¡£ Èà¤Ï¤³¤ÎWeb ¥Ú¡¼¥¸¤Î¥¿¥¤¥È¥ë¤ò How To Gawk Politely ¤È¤¤¤¦¥¿¥¤¥È¥ë¤Ë¤·¤Ê¤¤¤è¤¦½õ¸À¤ò¤·¤Æ¤¯¤ì¤¿¡£ Karl Berry¤Ï Texinfo¤ÎTeXÉôʬ¤ËºÝΩ¤Ã¤¿½õÎϤò¤·¤Æ¤¯¤ì¤¿¡£

I would like to thank Marshall and Elaine Hartholz of Seattle and Dr. Bert and Rita Schreiber of Detroit for large amounts of quiet vacation time in their homes, which allowed me to make significant progress on this Web ¥Ú¡¼¥¸ and on gawk itself.

Phil Hughes of SSC contributed in a very important way by loaning me his laptop GNU/Linux system, not once, but twice, which allowed me to do a lot of work while away from home.

David Trueman¤ÏÆÃÊ̤˾޻¿¤ò¼õ¤±¤ë¤ËÃͤ¹¤ë¡£Èà¤Ïgawk¤òÀ­Ç½¤¬¤è¤¯¡¢ ¥Ð¥°¤¬¤Ê¤¤¤â¤Î¤È¤¹¤ëÉÔ¶þ¤Ê»Å»ö¤ò¹Ô¤Ã¤¿¡£ Èà¤Ï¤â¤¦gawk¤Ë´Ø·¸¤·¤Æ¤¤¤Ê¤¤¤¬¡¢ ¤³¤Î¥×¥í¥¸¥§¥¯¥È¤ÇÈà¤È¤È¤â¤Ëºî¶È¤·¤¿¤³¤È¤ÏÈó¾ï¤Ë´î¤Ð¤·¤¤¤³¤È¤Ç¤¢¤Ã¤¿¡£

The intrepid members of the GNITS mailing list, and most notably Ulrich Drepper, provided invaluable help and feedback for the design of the internationalization features.

Nelson Beebe, Martin Brown, Andreas Buening, Scott Deifik, Darrel Hankerson, Isamu Hasegawa, Michal Jaegermann, Jürgen Kahrs, Pat Rankin, Kai Uwe Rommel, and Eli Zaretskii (½çÉÔÆ±) ¤ÏĹ´ü´Ö¤Ë¤ï¤¿¤êgawk¤Î "crack portability team"¤Î¥á¥ó¥Ð¡¼¤Ç¤¢¤ë¡£ Èà¤é¤Îºî¶È¤È½õ¤±¤òÈ´¤­¤Ë¤·¤Ægawk¤Ïº£Æü¤¢¤ë¤è¤¦¤Ê Í¥½¨¤Ê¥×¥í¥°¥é¥à¤Ë¤Ï¤Ê¤é¤Ê¤«¤Ã¤¿¤À¤í¤¦¡£ ¤³¤Î¥Á¡¼¥à¤ÎÁÇÀ²¤é¤·¤¤ÌÌ¡¹¤Èºî¶È¤ò¹Ô¤¦¤³¤È¤Ï´î¤Ð¤·¤¤¤³¤È¤Ç¤¢¤Ã¤¿¡£

gawk¤Î¥Æ¥¹¥È¤È¥Ç¥Ð¥Ã¥°¤Î´Öµ®½Å¤Ê½õ¸À¤ò´ó¤»¤Æ¤¯¤ì¡¢ ¸À¸ì¤Ë´Ø¤¹¤ë´ö¤Ä¤«¤Îµ¿ÌäÅÀ¤òÌÀ³Î¤Ë¤¹¤ë¤¿¤á¤Î½õ¤±¤ò¤·¤Æ¤¯¤ì¤¿ Bell¸¦µæ½ê¤Î Brian Kernighan ¤Ë´¶¼Õ¤¹¤ë¡£ Èà¤Î½õ¤±¤Ê¤¯¤·¤Æ²æ¡¹¤Ïgawk¤ä¤³¤Î¥É¥­¥å¥á¥ó¥È¤Îºî¶È¤Ë¤ª¤¤¤Æ Îɤ¤·ë²Ì¤ÏÆÀ¤é¤ì¤Ê¤«¤Ã¤¿¤À¤í¤¦¡£

Chuck Toporek, Mary Sheehan, and Claire Coutier of O'Reilly & Associates contributed significant editorial help for this Web ¥Ú¡¼¥¸ for the 3.1 release of gawk.

I must thank my wonderful wife, Miriam, for her patience through the many versions of this project, for her proofreading, and for sharing me with the computer. I would like to thank my parents for their love, and for the grace with which they raised and educated me. Finally, I also must acknowledge my gratitude to G-d, for the many opportunities He has sent my way, as well as for the gifts He has given me with which to take advantage of those opportunities.

Arnold Robbins
Nof Ayalon
ISRAEL
March, 2001


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1. Getting Started with awk

awk¤Î´ðËÜŪ¤Êµ¡Ç½¤Ï¡¢¥Õ¥¡¥¤¥ë¤«¤é¤¢¤ë¥Ñ¥¿¡¼¥ó¤ò´Þ¤ó¤Ç¤¤¤ë¹Ô (¤â¤·¤¯¤Ï¾¤Î¥Æ¥­¥¹¥È¤Î¹½À®Ã±°Ì)¤ò¸¡º÷¤¹¤ë¤³¤È¤Ç¤¢¤ë¡£ ¤¢¤ë¹Ô¤¬¥Ñ¥¿¡¼¥ó¤Î°ì¤Ä ¤Ë¥Þ¥Ã¥Á¤·¤¿¤È¤­¡¢ awk¤ÏÆÃÄê¤Î¥¢¥¯¥·¥ç¥ó¤ò¤½¤Î¹Ô¤ËÂФ·¤Æ¼Â¹Ô¤¹¤ë¡£ awk¤Ï¤³¤Î¤è¤¦¤Ë¤·¤ÆÆþÎÏ¥Õ¥¡¥¤¥ë¤ÎºÇ¸å¤Î¹Ô¤Þ¤Ç¤½¤ì¤¾¤ì¤Î¹Ô¤ò½èÍý¤·Â³¤±¤ë¡£

awk¤Î¥×¥í¥°¥é¥à¤Ï¾¤ÎÂçÉôʬ¤Î¸À¸ì¤È¤Ï°Û¤Ê¤Ã¤Æ¤¤¤Æ¡¢ ¥Ç¡¼¥¿¶îư(data-driven)¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï½èÍý¤·¤¿¤¤¤È»×¤¦¥Ç¡¼¥¿¤Ë¤Ä¤¤¤Æµ­½Ò¤·¡¢¤µ¤é¤Ë¤½¤ì¤ò¸«¤Ä¤±¤¿¤È¤­¤Ë ¤É¤Î¤è¤¦¤Ê¤³¤È¤ò¤¹¤ë¤Î¤«¤È¤¤¤¦¤³¤È¤Ë¤Ä¤¤¤Æµ­½Ò¤¹¤ë¡£¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¾¤Î¤Û¤È¤ó¤É¤Î¸À¸ì¤Ï¼ê³¤­·¿(procedural)¤Ç¤¢¤ë¡£¤½¤ì¤é¤Ë¤ª¤¤¤Æ¤Ï¡¢ »öºÙ¤«¤Ë¡¢¥×¥í¥°¥é¥à¤Î³Æ¥¹¥Æ¥Ã¥×Ëè¤Ë¤É¤Î¤è¤¦¤Ë¤¹¤ë¤«¤òµ­½Ò¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¼ê³¤­·¿¸À¸ì¤ò»ÈÍѤ·¤Æ¤¤¤ë¤È¤­¤Ï¡¢¤¢¤Ê¤¿¤¬¥×¥í¥°¥é¥à¤Ç½èÍý¤·¤è¤¦¤È¤·¤Æ¤¤¤ë ¥Ç¡¼¥¿¤¬¤É¤Î¤è¤¦¤Ê¹½Â¤¤ò¤·¤Æ¤¤¤ë¤«¤òÌÀ³Î¤Ëµ­½Ò¤¹¤ë¤³¤È¤Ï¡¢°ìÈÌŪ¤Ë¤Ï´Êñ¤Ç¤Ï¤Ê¤¤¡£ ¤³¤Î¤¿¤á¡¢awk¥×¥í¥°¥é¥à¤Ï¡¢ ¤·¤Ð¤·¤Ð½ñ¤¯¤Î¤âÆÉ¤à¤Î¤â¤ä¤µ¤·¤¤¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¤¢¤ë¡£

See section ¥æ¡¼¥¶¡¼ÄêµÁ´Ø¿ô.) Each rule specifies one pattern to search for and one action to perform upon finding the pattern. awk ¤ò¼Â¹Ô¤·¤¿¤È¤­¤Ëawk ¤¬¤É¤Î¤è¤¦¤Ëưºî¤¹¤ë¤«¤ò awk ¥×¥í¥°¥é¥à¤Ç»ØÄê¤Ç¤­¤ë¡£ ¥×¥í¥°¥é¥à¤Ïrules¤Î½¸¤Þ¤ê¤«¤é¤Ê¤ë(´Ø¿ôÄêµÁ¤â´Þ¤Þ¤ì¤ë¤¬¡¢ ¹âÅ٤ʵ¡Ç½¤Ê¤Î¤Çº£¤Î¤È¤³¤í¤Ï̵»ë¤¹¤ë¡£ See section ¥æ¡¼¥¶¡¼ÄêµÁ´Ø¿ô.)¡£ ¸Ä¡¹¤Î¥ë¡¼¥ë¤Ï¤¢¤ëÆÃÄê¤Î¥Ñ¥¿¡¼¥ó¤òõ¤·¡¢ ¸«¤Ä¤«¤Ã¤¿¥Ñ¥¿¡¼¥ó¤ÇÄêµÁ¤µ¤ì¤¿¥¢¥¯¥·¥ç¥ó¤ò¼Â¹Ô¤¹¤ë¡£

ʸˡŪ¤Ë¤Ï¡¢¥ë¡¼¥ë¤Ï¥Ñ¥¿¡¼¥ó¤È¤½¤ì¤Ë³¤¯¥¢¥¯¥·¥ç¥ó¤«¤é¹½À®¤µ¤ì¤ë¡£ ¥¢¥¯¥·¥ç¥ó¤Ï¥«¡¼¥ê¡¼¥Ö¥ì¡¼¥¹¤Ë¤è¤Ã¤Æ¥¢¥¯¥·¥ç¥ó¤È¶èÀÚ¤é¤ì¤ë¡£ ¥ë¡¼¥ë¤Ï°ìÈÌŪ¤Ë¤Ï²þ¹Ô¤Ë¤è¤Ã¤Æ¶èÀÚ¤é¤ì¤ë¡£ ¤½¤Î·ë²Ì¡¢ awk ¥×¥í¥°¥é¥à¤Ï°Ê²¼¤Î¤è¤¦¤Ê·Á¼°¤È¤Ê¤ë¡£

 
¥Ñ¥¿¡¼¥ó { ¥¢¥¯¥·¥ç¥ó }
¥Ñ¥¿¡¼¥ó { ¥¢¥¯¥·¥ç¥ó }
…
  

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1 awk ¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤Î»ÅÊý

awk¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤Ë¤Ï´ö¤Ä¤«¤ÎÊýË¡¤¬¤¢¤ë¡£ ¥×¥í¥°¥é¥à¤¬Ã»¤¤¤Î¤Ê¤é¤Ð¡¢²¼¤ÎÎã¤Î¤è¤¦¤Ëawk¤ò¼Â¹Ô¤¹¤ë¥³¥Þ¥ó¥É¤Ë ´Þ¤á¤Æ¤·¤Þ¤¦¤Î¤¬¤â¤Ã¤È¤â´Êñ¤Ç¤¢¤ë:

 
awk '¥×¥í¥°¥é¥à' ÆþÎÏ¥Õ¥¡¥¤¥ë1 ÆþÎÏ¥Õ¥¡¥¤¥ë2  

¥×¥í¥°¥é¥à¤¬Ä¹¤¤¾ì¹ç¡¢¥×¥í¥°¥é¥à¤ò¥Õ¥¡¥¤¥ë¤Ë¤·¤Æ¤·¤Þ¤¤¡¢ ¼¡¤Î¤è¤¦¤Ë¤·¤Æ¥³¥Þ¥ó¥É¤È°ì½ï¤Ë¼Â¹Ô¤¹¤ë¤Î¤¬°ìÈÌŪ¤Ë¤ÏÊØÍø¤Ç¤¢¤ë:

 
awk -f ¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ë ÆþÎÏ¥Õ¥¡¥¤¥ë1 ÆþÎÏ¥Õ¥¡¥¤¥ë2  

¤³¤Î¥»¥¯¥·¥ç¥ó¤Ç¤ÏξÊý¤Î¥á¥«¥Ë¥º¥à¤Ë¤Ä¤¤¤Æ¥Ð¥ê¥¨¡¼¥·¥ç¥ó¤â´Þ¤á¤Æ ÀâÌÀ¤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1.1 »È¤¤¼Î¤Æ¤Î°ìȯawk¥×¥í¥°¥é¥à

°ìÅÙawk¤Ë´·¤ì¿Æ¤·¤ó¤Ç¤·¤Þ¤¨¤Ð¡¢Ã±½ã¤Ê¥×¥í¥°¥é¥à¤òɬÍפȤ¹¤ë¤È¤­¤Ë ¥¿¥¤¥×¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¤À¤í¤¦¡£¤½¤Î¤è¤¦¤Ê¤È¤­¡¢ ¤½¤ó¤Ê¥×¥í¥°¥é¥à¤Ïawk¥³¥Þ¥ó¥É¤ÎºÇ½é¤Î°ú¿ô¤È¤·¤Æµ­½Ò¤Ç¤­¤ë¡£¤³¤Î¤è¤¦¤Ë:

 
awk '¥×¥í¥°¥é¥à' ÆþÎÏ¥Õ¥¡¥¤¥ë1 ÆþÎÏ¥Õ¥¡¥¤¥ë2  

¥×¥í¥°¥é¥à¤ÏÀè¤ËÀâÌÀ¤·¤¿¤è¤¦¤Ë¡¢ ¥Ñ¥¿¡¼¥ó¤È¥¢¥¯¥·¥ç¥ó ¤ÎʤӤ«¤é¤Ê¤ë¡£

¤³¤Î¥³¥Þ¥ó¥É¤Ï¥·¥§¥ë¤ä¥³¥Þ¥ó¥É¥¤¥ó¥¿¡¼¥×¥ê¥¿¡¼¤ËÂФ·¤Æawk ¤òµ¯Æ°¤µ¤»¡¢¥×¥í¥°¥é¥à¤¬ÆþÎÏ¥Õ¥¡¥¤¥ëÃæ¤Î¥ì¥³¡¼¥É¤ò½èÍý¤¹¤ë¤è¤¦¤Ë »Ø¼¨¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£¥×¥í¥°¥é¥à¤Î¼þ¤ê¤Ë¤Ï°úÍÑÉ䤬¤¢¤ê¡¢¤³¤ì¤Ë¤è¤Ã¤Æ¥·¥§¥ë¤Ï¡¢ ¥·¥§¥ë¤Ë¤È¤Ã¤Æ¤Î¥¹¥Ú¥·¥ã¥ë¥­¥ã¥é¥¯¥¿¤È¤Ê¤ëawk¤Î¥­¥ã¥é¥¯¥¿¤ò ¸í¤Ã¤Æ²ò¼á¤¹¤ë¤³¤È¤¬¤Ê¤¯¤Ê¤ë¡£Æ±»þ¤Ë¤³¤ì¤Ï¡¢ ¥·¥§¥ë¤ËÂФ·¤Æ¥×¥í¥°¥é¥à¤¬awk¤ËÂФ¹¤ë°ì¤Ä¤Î°ú¿ô¤Ë¤·¡¢ ¤Þ¤¿¥×¥í¥°¥é¥à¤¬Ê£¿ô¹Ô¤ËÅϤ뤳¤È¤â²Äǽ¤Ë¤¹¤ë¡£

¤³¤Î½ñ¼°¤Ïawk¥×¥í¥°¥é¥à¤òÊ̤Υե¡¥¤¥ë¤Ëʬ¤±¤ëɬÍפ¬¤Ê¤¤¤Î¤Ç¡¢ û¤¤¤â¤Î¤«¤éÃæÄøÅÙ¤ÎÂ礭¤µ¤Îawk¥×¥í¥°¥é¥à¤ò ¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤«¤é¼Â¹Ô¤¹¤ë¤Î¤ËÊØÍø¤Ç¤¢¤ë¡£ ¼«¸Ê´°·ë¤·¤¿(self-contained)¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤Ïʬ³ä¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò ´Ö°ã¤Ã¤¿¾ì½ê¤ËÃÖ¤¯¤³¤È¤¬¤Ê¤¤¤Î¤Ç¡¢¤è¤ê¿®ÍêÀ­¤¬¤¢¤ë¡£

¤³¤Î¾Ï¤Î¸å¤ÎÊý¤Ë¤¢¤ë ´ö¤Ä¤«¤Îñ½ã¤ÊÎã¤Ë´ö¤Ä¤«¤Îû¤¤¼«¸Ê´°·ë¤·¤¿¥×¥í¥°¥é¥à¤¬¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1.2 awk ¤òÆþÎÏ¥Õ¥¡¥¤¥ë¤Ê¤·¤Ç¼Â¹Ô¤¹¤ë

awk¤òÆþÎÏ¥Õ¥¡¥¤¥ë¤Ê¤·¤Ç¼Â¹Ô¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£ ¤½¤ì¤Ë¤Ï¤³¤¦¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¥¿¥¤¥×¤¹¤ì¤Ð¤è¤¤¡£

 
awk '¥×¥í¥°¥é¥à'
  

¤³¤Î¤È¤­¡¢awk¤Ï¥×¥í¥°¥é¥à¤ÎÆþÎϤòɸ½àÆþÎϤˤ¹¤ë¡£ ɸ½àÆþÎϤÏÄ̾¤¢¤Ê¤¿¤¬Ã¼Ëö¤«¤é¥¿¥¤¥×¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¤¢¤Ê¤¿¤¬Ctrl-d¤ò¥¿¥¤¥×¤·¤Æ¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤ò»Ø¼¨¤¹¤ë¤Þ¤Ç³¤¯ (¾¤Î¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ç¤Ï¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤ò¼¨¤¹¥­¥ã¥é¥¯¥¿¤Ï°ã¤Ã¤¿¤â¤Î¤Ç¤¢¤ë¡£ Î㤨¤ÐOS/2¤äMS-DOS¤Ç¤Ï Ctrl-z¤Ç¤¢¤ë)¡£

(BEGIN is a feature we haven't discussed yet): °Ê²¼¤ÎÎã¤Ë¤¢¤ë¥×¥í¥°¥é¥à¤Ï¿ÆÀڤʥ¢¥É¥Ð¥¤¥¹¤ò½ÐÎϤ· (Douglas Adams¤Î The Hitchhiker's Guide to the Galaxy¤è¤ê)¡¢ ¥³¥ó¥Ô¥å¡¼¥¿¥×¥í¥°¥é¥ß¥ó¥°¤ÎÊ£»¨¤µ¤ËÂФ·¤Æ¶²¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë (BEGIN¤Ï¤Þ¤ÀÀâÌÀ¤·¤Æ¤¤¤Ê¤¤µ¡Ç½¤Ç¤¢¤ë):

 
$ awk "BEGIN { print \"Don't Panic!\" }"
-| Don't Panic!
  

¤³¤Î¥×¥í¥°¥é¥à¤Ï²¿¤ÎÆþÎϤâÆÉ¤Þ¤Ê¤¤¡£¥À¥Ö¥ë¥¯¥©¡¼¥È¤ÎÁ°¤Ë¤¢¤ë `\'¤Ï¡¢ ¥·¥§¥ë¤Î¥¯¥©¡¼¥È¥ë¡¼¥ë¤Î¤¿¤á¤Ë¡¢ÆÃ¤Ë¥À¥Ö¥ë¥¯¥©¡¼¥È¤È¥·¥ó¥°¥ë¥¯¥©¡¼¥È¤ò º®¤¼¤Æ»È¤¦¾ì¹ç¤ËɬÍפǤ¢¤ë¡£(6)

¼¡¤Ê¤ëñ½ã¤Êawk¥×¥í¥°¥é¥à¤Ïcat¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò ÌÏÊ魯¤ë¤â¤Î¤Ç¤¢¤ë¡£¤³¤ì¤Ï¥­¡¼¥Ü¡¼¥É¤«¤é¥¿¥¤¥×¤·¤¿¤â¤Î¤¹¤Ù¤Æ¤ò ɸ½à½ÐÎϤ˥³¥Ô¡¼¤¹¤ë(¤³¤ó¤Ê¤Ëû¤¤¤Î¤Ë¤Á¤ã¤ó¤ÈƯ¤¯¤Î¤À)¡£

 
$ awk '{ print }'
Now is the time for all good men
-| Now is the time for all good men
to come to the aid of their country.
-| to come to the aid of their country.
Four score and seven years ago, ...
-| Four score and seven years ago, ...
What, me worry?
-| What, me worry?
Ctrl-d
  

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1.3 Ť¤¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë

¤È¤­¤È¤·¤Æawk¥×¥í¥°¥é¥à¤¬Èó¾ï¤ËÂ礭¤¯¤Ê¤ë¤³¤È¤¬¤¢¤ë¡£ ¤³¤Î¾ì¹ç¡¢¥×¥í¥°¥é¥à¤òÊ̤Υե¡¥¤¥ë¤Ëʬ¤±¤ÆÃÖ¤¯¤Î¤¬ÊØÍø¤Ç¤¢¤ë¡£ awk¤ËÂФ·¤Æ¥×¥í¥°¥é¥à¤ÎÆþ¤Ã¤¿¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë¤Ë¤Ï¼¡¤Î¤è¤¦¤Ë¥¿¥¤¥×¤¹¤ë:

 
awk -f ¥½¡¼¥¹¥Õ¥¡¥¤¥ë ÆþÎÏ¥Õ¥¡¥¤¥ë1 ÆþÎÏ¥Õ¥¡¥¤¥ë2  

`-f'¤Ïawk¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ËÂФ·¤Æawk¥×¥í¥°¥é¥à¤ò ¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤«¤é¼õ¤±¼è¤ë¤È¤¤¤¦¤³¤È¤ò»ØÄꤹ¤ë¡£ Ǥ°Õ¤Î̾Á°¤ò¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£¤¿¤È¤¨¤Ð¡¢¼¡¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤ò:

 
BEGIN { print "Don't Panic!" }
  

`advice'¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤ËÃÖ¤¯¤³¤È¤¬¤Ç¤­¡¢¼¡¤Î¤è¤¦¤Ê¥³¥Þ¥ó¥É¤Ç»È¤¦¡£

 
awk -f advice
  

¤³¤ì¤Ï¼¡¤ÎÎã¤È¤ª¤Ê¤¸¤³¤È¤Ç¤¢¤ë¡£

 
awk "BEGIN { print \"Don't Panic!\" }"
  

¤³¤Á¤é¤Ï´û¤ËÀâÌÀ¤·¤¿ (see section awk ¤òÆþÎÏ¥Õ¥¡¥¤¥ë¤Ê¤·¤Ç¼Â¹Ô¤¹¤ë)¡£ ÂçÉôʬ¤Î¥Õ¥¡¥¤¥ë̾¤Ï¥·¥§¥ë¤Î¥¹¥Ú¥·¥ã¥ë¥­¥ã¥é¥¯¥¿¤ò´Þ¤ó¤Ç¤¤¤Ê¤¤¤Î¤Ç¡¢ Ä̾ï¤Ï`-f'¤Ç»ØÄꤹ¤ë¥Õ¥¡¥¤¥ë̾¤ò°úÍÑÉä¤Ç³ç¤ëɬÍפϤʤ¤¡£ `advice' Ãæ¤Ç¤Ï¡¢awk¥×¥í¥°¥é¥à¤Ï°úÍÑÉä¤Ç³ç¤é¤ì¤Æ¤¤¤Ê¤¤¡£ °úÍÑÉä¤ò¤Ä¤±¤ëɬÍפ¬¤¢¤ë¤Î¤Ïawk¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Ç ¥×¥í¥°¥é¥à¤òÍ¿¤¨¤ë¾ì¹ç¤À¤±¤Ç¤¢¤ë¡£

¤â¤·awk¥×¥í¥°¥é¥à¤Î¥Õ¥¡¥¤¥ë¤Î³Îǧ¤òÌÀ³Î¤Ë¤·¤¿¤¤¤Î¤Ê¤é¡¢ ¥Õ¥¡¥¤¥ë̾¤Ë`.awk'¤È¤¤¤¦³ÈÄ¥»Ò¤òÄɲ乤뤳¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ì¤Ïawk¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤Ë¤Ï±Æ¶Á¤òµÚ¤Ü¤µ¤Ê¤¤¤¬¡¢ "housekeeping"¤òÍÆ°×¤Ë¤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1.4 ¼Â¹Ô²Äǽ¤Ê awk ¥×¥í¥°¥é¥à

For example, you could update the file `advice' to look like this: °ìÅÙawk¤ò³Ø¤ó¤Ç¤·¤Þ¤¨¤Ð¡¢¥·¥§¥ë¤Î`#!' ¹½Ê¸¤ò»È¤Ã¤Æ¡¢ ÆÈΩ¤·¤¿ awk ¥¹¥¯¥ê¥×¥È¤ò½ñ¤¤¤Æ¤ß¤¿¤¯¤Ê¤ë¤À¤í¤¦¡£ ¿¤¯¤ÎUnix¥·¥¹¥Æ¥à(7) ¤Ç¤³¤ì¤¬²Äǽ¤Ç¤¢¤ë(¤½¤·¤Æ¤¤¤Ä¤«¤ÏGNU¥·¥¹¥Æ¥à¤Ç¤â)¡£

 
#! /bin/awk -f

BEGIN { print "Don't Panic!" }
  

¤³¤Î¥Õ¥¡¥¤¥ë¤ò(chmod¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»È¤Ã¤Æ)¼Â¹Ô²Äǽ¤Ë¤·¤¿¸å¤Ç¡¢ ¥·¥§¥ë¤«¤éñ½ã¤Ë`advice'¤È¥¿¥¤¥×¤¹¤ë¤À¤±¤Ç¡¢`awk -f advice' ¤È¥¿¥¤¥×¤·¤¿¤Î¤ÈƱ¤¸¤è¤¦¤Ë¥·¥¹¥Æ¥à¤¬awk¤ò¼Â¹Ô¤¹¤ë¤è¤¦¥¢¥ì¥ó¥¸¤¹¤ë (8):

 
$ chmod +x advice
$ advice
-| Don't Panic!
  

(¤³¤³¤Ç¡¢¤¢¤Ê¤¿¤Î»È¤Ã¤Æ¤¤¤ë¥·¥§¥ë¤Î¸¡º÷¥Ñ¥¹ÊÑ¿ô(ŵ·¿Åª¤Ë¤Ï$PATH)¤Ë ¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤³¤È¤ò²¾Äꤷ¤Æ¤¤¤ë¡£¤â¤·¤½¤¦¤Ç¤Ê¤±¤ì¤Ð ¥·¥§¥ë¾å¤Ç`./advice'¤È¥¿¥¤¥×¤¹¤ëɬÍפ¬¤¢¤ë¤À¤í¤¦)

¼«¸Ê´°·ë¤·¤¿awk¥¹¥¯¥ê¥×¥È¤Ï¡¢¤½¤ì¤ò»È¤¦¿Í¤¬¤½¤Î¥×¥í¥°¥é¥à¤ò awk¤Ç½ñ¤«¤ì¤¿¤â¤Î¤Ç¤¢¤ë¤³¤È¤òÃΤ뤳¤È¤Ê¤·¤Ëµ¯Æ°¤Ç¤­¤ë¥×¥í¥°¥é¥à¤ò ½ñ¤­¤¿¤¤¤È»×¤¦¤È¤­¤ËÊØÍø¤Ç¤¢¤ë¡£

Advanced Notes: Portability Issues with `#!'

°ìÉô¤Î¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥¤¥ó¥¿¡¼¥×¥ê¥¿¡¼¤Î̾Á°¤ÎŤµ¤Ï32¥­¥ã¥é¥¯¥¿¤Þ¤Ç¤Ë À©¸Â¤µ¤ì¤Æ¤¤¤ë¡£¤·¤Ð¤·¤Ð¡¢¤³¤ì¤Ï¥·¥ó¥Ü¥ê¥Ã¥¯¥ê¥ó¥¯¤ò»È¤Ã¤Æ ²óÈò¤¹¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£

`#!'¤Î¹Ô¤Çawk¤Î¥Ñ¥¹¤Î¸å¤ËÆó¤Ä°Ê¾å¤Î°ú¿ô¤òÃÖ¤¯¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ ¤³¤ì¤ò¤·¤Æ¤·¤Þ¤¦¤ÈÀµ¤·¤¯Æ°ºî¤·¤Ê¤¤¤À¤í¤¦¡£ ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ï¹Ô¤Î»Ä¤ê¤ÎÉôʬ¤ò°ì¤Ä¤Î°ú¿ô¤È¤·¤Æ¼è¤ê°·¤¤¡¢ ¤½¤ì¤òawk¤ËÅϤ¹¡£¤³¤ì¤Ë¤è¤Ã¤Æº®Í𤷤¿Æ°ºî¤¬¤â¤¿¤é¤µ¤ì¤ë¡£ ¤¢¤ê¤¬¤Á¤Ê¤Î¤Ï¡¢ awk¤Îusage¥á¥Ã¥»¡¼¥¸¤ÎÎब½ÐÎϤµ¤ì¤ë¤³¤È¤À¤í¤¦¡£

ºÇ¸å¤Ë¡¢ARGV[0](see section ÁȤ߹þ¤ßÊÑ¿ô)¤Ï¤¢¤Ê¤¿¤Î»È¤Ã¤Æ¤¤¤ë ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ ÍÍ¡¹¤Ê¤â¤Î¤Ë¤Ê¤ë¤³¤È¤ò½Ò¤Ù¤Æ¤ª¤¯¡£¤¢¤ë¥·¥¹¥Æ¥à¤Ç¤Ï`awk'¤¬ ¤½¤³¤ËÆþ¤ê¡¢Ê̤Τ¢¤ë¥·¥¹¥Æ¥à¤Ç¤Ïawk¤Î¥Õ¥ë¥Ñ¥¹(`/bin/awk' ¤Î¤è¤¦¤Ë)¤¬Æþ¤ê¡¢¤Þ¤¿Ê̤Υ·¥¹¥Æ¥à¤Ç¤Ï¥¹¥¯¥ê¥×¥È¤Î̾Á°(¤³¤³¤Ç¤Ï`advice') ¤¬Æþ¤ë¡£¥¹¥¯¥ê¥×¥È¤Î̾Á°¤òÆÀ¤ë¤¿¤á¤ËARGV[0]¤ÎÃͤòÅö¤Æ¤Ë¤·¤Æ¤Ï ¤¤¤±¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1.5 awk ¥×¥í¥°¥é¥àÃæ¤Î¥³¥á¥ó¥È

¥³¥á¥ó¥È¤È¤Ï¥×¥í¥°¥é¥àÃæ¤Ç¡¢¿Í¤¬¡Ê¥×¥í¥°¥é¥à¤ò¡ËÆÉ¤ß¤ä¤¹¤¯¤¹¤ë¤¿¤á¤Ë ´Þ¤á¤é¤ì¤ë¥Æ¥­¥¹¥È¤Ç¤¢¤ê¡¢¥×¥í¥°¥é¥à¤Ë¤È¤Ã¤ÆÉ¬Í×ÉԲķç¤È¤¤¤¦¤â¤Î¤Ç¤Ï¤Ê¤¤¡£ ¥³¥á¥ó¥È¤Ï¥×¥í¥°¥é¥à¤¬½ñ¤±¤ë¤È¤³¤í¤Ê¤é¤É¤³¤Ç¤âÃÖ¤±¤ë¤¬¡¢²¿¤ÎƯ¤­¤â¤·¤Ê¤¤¡£ ¿È¶á¤ÊÁ´¤Æ¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ï¤½¤ÎÍͤÊÌÜŪ¤Î¤¿¤á¤Ë¥³¥á¥ó¥È¤ò»È¤¨¤ëÍͤˤʤäƤ¤¤ë¤¬¡¢ ¤½¤ì¤Ïŵ·¿Åª¤Ê¥×¥í¥°¥é¥à¤È¤¤¤¦¤â¤Î¤Ï²¿¤é¤«¤Î½õ¤±¤Ê¤·¤Ë¤Ï Íý²ò¤¹¤ë¤Î¤¬Èó¾ï¤ËÆñ¤·¤¤¤«¤é¤Ç¤¢¤ë

awk¸À¸ì¤Î¥³¥á¥ó¥È¤Ï`#'¤Ç»Ï¤Þ¤ê¡¢¤½¤Î¹Ô¤Î½ª¤ï¤ê¤Þ¤Ç³¤¯¡£ awk¸À¸ì¤Ï`#'¤Ë³¤¯Éôʬ¤ò̵»ë¤¹¤ë¡£ Î㤨¤Ð¡¢`advice'¤Ë¼¡¤Î¤è¤¦¤ËÄɲäò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£

 
# This program prints a nice friendly message.  It helps
# keep novice users from being afraid of the computer.
BEGIN    { print "Don't Panic!" }
  

awk¥×¥í¥°¥é¥à¤ò¥­¡¼¥Ü¡¼¥É¤«¤éľÀÜÆþÎϤ·¤Æ¤¤¤ë¤è¤¦¤Ê¾ì¹ç¤Ç¤â ¥³¥á¥ó¥È¹Ô¤òÆþÎϤ¹¤ë¤³¤È¤Ï²Äǽ¤Ç¤¢¤ë¤±¤ì¤É¤â¡¢¤³¤ì¤Ï¤¢¤Þ¤êÍ­¸ú¤Ê¤³¤È¤Ç¤Ï¤Ê¤¤¤À¤í¤¦¡£ ¤Ê¤¼¤Ê¤é¥³¥á¥ó¥È¤ò»È¤¦ÌÜŪ¤¬¡¢¸åÆü¤¢¤Ê¤¿¤«¡¢¤¢¤ë¤¤¤Ï¾¤Î¿Í¤¬¤½¤Î¥×¥í¥°¥é¥à¤ò ÆÉ¤ó¤À¤È¤­¤ËÍý²ò¤¹¤ë¤Î¤ò½õ¤±¤ë¤¿¤á¤À¤«¤é¤À¡£

·Ù¹ð: »È¤¤¼Î¤Æ¤Î°ìȯawk¥×¥í¥°¥é¥à¤Ç¸ÀµÚ¤·¤¿¤è¤¦¤Ë¡¢ ¾®µ¬ÌÏ¤Î¥×¥í¥°¥é¥à¤ò¥·¥ó¥°¥ë¥¯¥©¡¼¥È¤Ç¤¯¤¯¤ë¤³¤È¤¬²Äǽ¤Ç¤¢¤ê¡¢ ¤½¤ì¤Ë¤è¤Ã¤Æ¤¢¤Ê¤¿¤Î¥·¥§¥ë¥¹¥¯¥ê¥×¥È¤òself-containd¤Ê¤â¤Î¤Ë¤Ç¤­¤ë¡£ ¤³¤ì¤ò¹Ô¤Ã¤¿¤È¤­¡¢¥¢¥Ý¥¹¥È¥í¥Õ¥£(¥·¥ó¥°¥ë¥¯¥©¡¼¥È)¤ò ¥³¥á¥ó¥ÈÃæ(¤â¤·¤¯¤Ï¥×¥í¥°¥é¥à¤Î¤É¤³¤«¤Ç)¤Ç»È¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¡£ ¥·¥§¥ë¤Ï¤½¤Î¤è¤¦¤Ê¥¯¥©¡¼¥È¤ò¥×¥í¥°¥é¥àÁ´ÂΤò¤¯¤¯¤ë¥¯¥©¡¼¥È¤È¤·¤Æ°·¤Ã¤Æ¤·¤Þ¤¦¡£ ·ë²Ì¤È¤·¤Æ¡¢Ä̾ï¤Ï¥·¥§¥ë¤¬¥¯¥©¡¼¥È¤Î¥Ð¥é¥ó¥¹¤¬¼è¤ì¤Æ¤¤¤Ê¤¤¤È¤¤¤Ã¤¿ ¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë¡£¤½¤·¤Æ¡¢awk ¤¬¼ÂºÝ¤Ë¼Â¹Ô¤µ¤ì¤¿¤Ê¤é¤Ð¡¢ ¹½Ê¸¥¨¥é¡¼¤Î¤è¤¦¤Ê̯¤Ê¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë¤À¤í¤¦¡£Îã¤òµó¤²¤ë:

 
$ awk '{ print "hello" } # let's be cute'
>
  

¥·¥§¥ë¤ÏºÇ½é¤ÎÆó¤Ä¤Î¥¯¥©¡¼¥È¤Î¥Þ¥Ã¥Á¤ò¸«¤Æ¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î½ª¤ï¤ê¤Ë¤¢¤ë ¤Î¤¬¿·¤¿¤Ê¥¯¥©¡¼¥È¥ª¥Ö¥¸¥§¥¯¥È¤Î»Ï¤Þ¤ê¤Ç¤¢¤ë¤È¤ß¤Ê¤¹¡£ ¤·¤¿¤¬¤Ã¤ÆÆó¼¡¥×¥í¥ó¥×¥È¤¬É½¼¨¤µ¤ì¤ÆÆþÎÏÂÔ¤Á¤È¤Ê¤ë¡£ Unix¤Îawk¤Ç¤Ï¡¢¥¯¥©¡¼¥È¤òÊĤ¸¤ë¤È°Ê²¼¤Î·ë²Ì¤È¤Ê¤ë:

 
$ awk '{ print "hello" } # let's be cute'
> '
error--> awk: can't open file be
error-->  source line number 1
  

`let's'¤ÎÃæ¤Î¥·¥ó¥°¥ë¥¯¥©¡¼¥È¤ÎÁ°¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤òÃÖ¤¯¤³¤È¤Ï ½õ¤±¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£¤Ê¤¼¤Ê¤é¡¢¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ï¥·¥ó¥°¥ë¥¯¥©¡¼¥È¤ÎÃæ¤Ç¤Ï ÆÃÊ̤ʤâ¤Î¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£ ¼¡¤Î¥µ¥Ö¥»¥¯¥·¥ç¥ó¤Ç¤Ï¥·¥§¥ë¤Î¥¯¥©¡¼¥Æ¥£¥ó¥°¥ë¡¼¥ë¤Ë¤Ä¤¤¤ÆÀâÌÀ¤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.1.6 ¥·¥§¥ë¤Î¥¯¥©¡¼¥Æ¥£¥ó¥°¤Ë¤Ä¤¤¤Æ

ÌõÃí:Windows(¥³¥Þ¥ó¥É¥×¥í¥ó¥×¥È)¤Ë¤Ï´Ø·¸¤·¤Ê¤¤Éôʬ¤Ê¤Î¤Ç¸å²ó¤·¡£

For short to medium length awk programs, it is most convenient to enter the program on the awk command line. This is best done by enclosing the entire program in single quotes. This is true whether you are entering the program interactively at the shell prompt, or writing it as part of a larger shell script:

 
awk 'program text' input-file1 input-file2  

Once you are working with the shell, it is helpful to have a basic knowledge of shell quoting rules. The following rules apply only to POSIX-compliant, Bourne-style shells (such as bash, the GNU Bourne-Again Shell). If you use csh, you're on your own.

Mixing single and double quotes is difficult. You have to resort to shell quoting tricks, like this:

 
$ awk 'BEGIN { print "Here is a single quote <'"'"'>" }'
-| Here is a single quote <'>
  

This program consists of three concatenated quoted strings. The first and the third are single-quoted, the second is double-quoted.

This can be ``simplified'' to:

 
$ awk 'BEGIN { print "Here is a single quote <'\''>" }'
-| Here is a single quote <'>
  

Judge for yourself which of these two is the more readable.

Another option is to use double quotes, escaping the embedded, awk-level double quotes:

 
$ awk "BEGIN { print \"Here is a single quote <'>\" }"
-| Here is a single quote <'>
  

This option is also painful, because double quotes, backslashes, and dollar signs are very common in awk programs.

A third option is to use the octal escape sequence equivalents for the single- and double-quote characters, like so:

 
$ awk 'BEGIN { print "Here is a single quote <\47>" }'
-| Here is a single quote <'>
$ awk 'BEGIN { print "Here is a double quote <\42>" }'
-| Here is a double quote <">
  

This works nicely, except that you should comment clearly what the escapes mean.

A fourth option is to use command-line variable assignment, like this:

 
$ awk -v sq="'" 'BEGIN { print "Here is a single quote <" sq ">" }'
-| Here is a single quote <'>
  

If you really need both single and double quotes in your awk program, it is probably best to move it into a separate file, where the shell won't be part of the picture, and you can say what you mean.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.2 Îã¤Î¤¿¤á¤Î ¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë

¤³¤ÎWeb ¥Ú¡¼¥¸¤Ç¤ÎÎã¤Î¿¤¯¤Ï¡¢Æó¤Ä¤Î¥µ¥ó¥×¥ë¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤«¤éÆþÎϤò¼è¤ë¡£ °ìÈÖÌÜ¤Ï `BBS-list'¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¢¤ê¡¢ BBS¤Î¥ê¥¹¥È¤È¤½¤Î¾ðÊ󤬵­½Ò¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¡£ ÆóÈÖÌܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤Ï`inventory-shipped' ¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç ·îËè¤ÎÁ¥ÀѤߤÎÎ̤¬µ­½Ò¤µ¤ì¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¡£ ¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤Î³Æ¹Ô¤Ë¤Ï¡¢°ì¤Ä¤Î¥ì¥³¡¼¥É(record)¤À¤±¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¡£

`BBS-list'Ãæ¤Î³Æ¥ì¥³¡¼¥É¤Ï¡¢BBS¤Î̾¾Î¤È¤½¤ÎÅÅÏÃÈֹ桢¥Ü¡¼¥ì¡¼¥È¡¢ ¤½¤·¤Æ±¿±Ä»þ´Ö¤òɽ¤¹¥³¡¼¥É¤«¤é¹½À®¤µ¤ì¤ë¡£ ºÇ½ª¥«¥é¥à¤Î `A'¤ÏBBS¤¬½ªÆü±¿±Ä¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò¼¨¤·¡¢ ƱÍÍ¤Ë `B'¤Ï BBS¤Î±¿±Ä¤¬Ìë´Ö¤È½µËö¤Î¤ß¤Ç¤¢¤ë¤³¤È¤ò¡¢ `C'¤Ï½µËö¤Î¤ß¤Î±¿±Ä¤Ç¤¢¤ë»ö¤ò¼¨¤¹¡£

 
aardvark     555-5553     1200/300          B
alpo-net     555-3412     2400/1200/300     A
barfly       555-7685     1200/300          A
bites        555-1675     2400/1200/300     A
camelot      555-0542     300               C
core         555-2912     1200/300          C
fooey        555-1234     2400/1200/300     B
foot         555-6699     1200/300          B
macfoo       555-6480     1200/300          A
sdace        555-3430     2400/1200/300     A
sabafoo      555-2127     1200/300          C
  

ÆóÈÖÌܤΥǡ¼¥¿¥Õ¥¡¥¤¥ë¤Ï`inventory-shipped'¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¡¢ ǯ´Ö¤ÎÀѹþÎ̤òµ­½Ò¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£ ³Æ¥ì¥³¡¼¥É¤Ï¡¢·î¤È¡¢Îп§¤Î¤«¤´¤ÎÀѹþÎÌ¡¢ÀÖ¤¤È¢¤ÎÀѹþÎÌ¡¢ ¥ª¥ì¥ó¥¸¿§¤Î¥Ð¥Ã¥°¤ÎÀѹþÎÌ¡¢¤½¤·¤ÆÀĤ¤Êñ¤ß¤ÎÀѹþÎ̤«¤é¹½À®¤µ¤ì¤Æ¤¤¤ë¡£ ¥Õ¥¡¥¤¥ë¤Ë¤Ï16¤Î¥¨¥ó¥È¥ê¤¬¤¢¤ê¡¢¤¢¤ëǯ¤Î12¥ö·î¤È¡¢ ¤½¤ÎÍâǯ¤Î4¥ö·îʬ¤Î¥Ç¡¼¥¿¤¬µ­½Ò¤µ¤ì¤Æ¤¤¤ë¡£

 
Jan  13  25  15 115
Feb  15  32  24 226
Mar  15  24  34 228
Apr  31  52  63 420
May  16  34  29 208
Jun  31  42  75 492
Jul  24  34  67 436
Aug  15  34  47 316
Sep  13  55  37 277
Oct  29  54  68 525
Nov  20  87  82 577
Dec  17  35  61 401

Jan  21  36  64 620
Feb  26  58  80 652
Mar  24  75  70 495
Apr  21  70  74 514
  

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.3 ´ö¤Ä¤«¤Îñ½ã¤ÊÎã

°Ê²¼¤ËÎ㼨¤·¤¿¥³¥Þ¥ó¥É¤Ï`BBS-list'¤È¤¤¤¦ÆþÎÏ¥Õ¥¡¥¤¥ë¤«¤é `foo'¤È¤¤¤¦Ê¸»úÎó¤ò¸¡º÷¤¹¤ëñ½ã¤Êawk¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡£

 
awk '/foo/ { print $0 }' BBS-list
  

`foo'¤ò´Þ¤ó¤Ç¤¤¤ë¹Ô¤¬¸«¤Ä¤«¤Ã¤¿¤È¤­¡¢¤½¤Î¹Ô¤Ï½ÐÎϤµ¤ì¤ë¡£ ¤Ê¤¼¤Ê¤é`print $0'¤¬¥«¥ì¥ó¥È¹Ô¤Î½ÐÎϤò°ÕÌ£¤·¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë (`print'¤À¤±¤Ç¤âƱ¤¸°ÕÌ£¤Ë¤Ê¤ë¤Î¤Ç¤½¤¦½ñ¤¯¤³¤È¤â¤Ç¤­¤ë)¡£

¥¹¥é¥Ã¥·¥å(`/')¤¬Ê¸»úÎó`foo'¤Î¼þ¤ê¤Ë¤¢¤ë¤³¤È¤¬ µ¤¤Ë¤Ê¤Ã¤¿¤À¤í¤¦¡£¤³¤Î¥¹¥é¥Ã¥·¥å¤Ï`foo'¤¬¸¡º÷ÂоݤΥѥ¿¡¼¥ó¤Ç ¤¢¤ë¤³¤È¤ò¼¨¤¹¤â¤Î¤Ç¤¢¤ë¡£¤³¤Î¥¿¥¤¥×¤Î¥Ñ¥¿¡¼¥ó¤ÏÀµµ¬É½¸½ (regular expression)¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¡¢¾Ü¤·¤¯¤Ï¸å¤Ç(see section Àµµ¬É½¸½) ÀâÌÀ¤¹¤ë¡£ ¥Ñ¥¿¡¼¥ó¤Ïñ¸ì¤Î°ìÉôʬ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤â¤Î¤Ç¤âÎɤ¤¡£ awk¥×¥í¥°¥é¥à¤Î¼þ¤ê¤Ë¤Ï¥·¥ó¥°¥ë¥¯¥©¡¼¥È¤¬¤¢¤ë¤Î¤Ç ¥·¥§¥ë¤Ï¥·¥§¥ë¤ÎÆÃ¼ì¥­¥ã¥é¥¯¥¿¤ò²ò¼á¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£

°Ê²¼¤Ï¤³¤Î¥×¥í¥°¥é¥à¤Î½ÐÎϤ·¤¿¤â¤Î¤Ç¤¢¤ë¡£

 
$ awk '/foo/ { print $0 }' BBS-list
-| fooey        555-1234     2400/1200/300     B
-| foot         555-6699     1200/300          B
-| macfoo       555-6480     1200/300          A
-| sabafoo      555-2127     1200/300          C
  

awk¤Î¥ë¡¼¥ë¤Ç¤Ï¡¢¥Ñ¥¿¡¼¥ó¤«¥¢¥¯¥·¥ç¥ó¤Î¤¤¤º¤ì¤«¤ò ¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤¬Î¾Êý¤ò°ìÅ٤˾Êά¤¹¤ë¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£ ¥Ñ¥¿¡¼¥ó¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¡¢¤½¤Î¥¢¥¯¥·¥ç¥ó¤Ï¤¹¤Ù¤Æ¤Î ÆþÎϹԤËÂФ·¤ÆÅ¬ÍѤµ¤ì¤ë¡£ ¥¢¥¯¥·¥ç¥ó¤¬¾Êά¤µ¤ì¤¿¾ì¹ç¤Î¥Ç¥Õ¥©¥ë¥È¤Î¥¢¥¯¥·¥ç¥ó¤Ï ¥Ñ¥¿¡¼¥ó¤Ë¥Þ¥Ã¥Á¤·¤¿¤¹¤Ù¤Æ¤Î¹Ô¤ò½ÐÎϤ¹¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£

¤·¤¿¤¬¤Ã¤Æ¡¢Àè¤ÎÎã¤Ç¤Ï¥¢¥¯¥·¥ç¥ó(printʸ¤È¥«¡¼¥ê¡¼¥Ö¥ì¡¼¥¹)¤ò ¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢¤½¤Î¾ì¹ç¤Ç¤âƱ¤¸·ë²Ì¡¢¤Ä¤Þ¤ê¥Ñ¥¿¡¼¥ó`foo'¤Ë ¥Þ¥Ã¥Á¤·¤¿¤¹¤Ù¤Æ¤Î¹Ô¤¬½ÐÎϤµ¤ì¤ë¡£ ÂоÈŪ¤Ë¡¢printʸ¤ò¾Êά¤·¤¿¤¬¥«¡¼¥ê¡¼¥Ö¥ì¡¼¥¹¤ò»Ä¤·¤¿¾ì¹ç¤Ë¤Ï ¶õ¥¢¥¯¥·¥ç¥ó¤È¤Ê¤ê¤Ê¤Ë¤â¤·¤Ê¤¤(¤Ä¤Þ¤ê²¿¤â½ÐÎϤµ¤ì¤Ê¤¤)¡£

¿¤¯¤ÎÍ­ÍѤÊawk¥×¥í¥°¥é¥à¤Ïû¤¯¡¢°ì¹Ô¤«Æó¹Ô¤Î¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤³¤Ë½¸¤á¤¿¤Î¤Ï¤½¤¦¤¤¤Ã¤¿¡¢ÊØÍø¤Çû¤¤¥×¥í¥°¥é¥à¤Ç¤¢¤ë¡£ ¤³¤ì¤é¤Î¥×¥í¥°¥é¥à¤Î¤¦¤Á¤Î´ö¤Ä¤«¤Ï¡¢¤Þ¤ÀÀâÌÀ¤·¤Æ¤¤¤Ê¤¤µ¡Ç½¤ò»È¤Ã¤Æ¤¤¤ë (¥×¥í¥°¥é¥à¤ÎÀâÌÀ¤Ï²¿¤«¤ò¤¹¤ë¤¿¤á¤ÎÎɤ¤¥¢¥¤¥Ç¥¢¤ò¤¢¤Ê¤¿¤Ë¤â¤¿¤é¤¹¤À¤í¤¦¤¬¡¢ ¤É¤¦¤«¤³¤ÎWeb ¥Ú¡¼¥¸¤Î»Ä¤ê¤òÆÉ¤ó¤ÇÍߤ·¤¤¡£¤¢¤Ê¤¿¤¬awk¤Î¥¨¥­¥¹¥Ñ¡¼¥È¤È¤Ê¤ë¤¿¤á¤Ë!)¡£ Îã¤ÎÂçÉôʬ¤Ï`data'¤È¤¤¤¦Ì¾Á°¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¤¤¤ë¡£ ¤³¤ì¤Ïñ¤Ë¥×¥ì¡¼¥¹¥Û¥ë¥À¡¼¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î¥×¥í¥°¥é¥à¤ò¼ÂºÝ¤Ë»È¤¦¤Ê¤é¡¢ `data'¤ò¤¢¤Ê¤¿¤Î¥Õ¥¡¥¤¥ë̾¤ÇÃÖ¤­´¹¤¨¤ë¤³¤È¡£ ¾­Íè¤Î¥ê¥Õ¥¡¥ì¥ó¥¹¤Î¤¿¤á¡¢awk¤Ç¤ÎÊ£¿ô¤Î¤ä¤êÊý¤¬ºÜ¤Ã¤Æ¤¤¤ë¡£ ´ö¤Ä¤«¤Î¥Ý¥¤¥ó¥È¤Ç¤Ï¡¢¤³¤ì¤é¤ÎÎã¤ò¸«¤ë¤¿¤á¤Ë¸åÌá¤ê¤·¤Æ ¤³¤³¤ÇÎ㼨¤µ¤ì¤Æ¤¤¤ë¤³¤È¤ò¹Ô¤¦°Û¤Ê¤ë¤ä¤êÊý¤ò¸«½Ð¤¹¤«¤â¤·¤ì¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.4 Æó¤Ä¤Î¥ë¡¼¥ë¤ÎÎã

awk¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ï°ìÅ٤Υե¡¥¤¥ëÆþÎϤǰì¹Ô¤À¤±ÆþÎϤ¹¤ë¡£ ÆþÎϤµ¤ì¤¿¸Ä¡¹¤Î¹Ô¤ËÂФ·¤Æ¡¢awk¥×¥í¥°¥é¥à¤Çµ­½Ò¤µ¤ì¤Æ¤¤¤ë ³Æ¥ë¡¼¥ë¤Î¥Ñ¥¿¡¼¥ó¤È¤Î¾È¹ç¤ò¹Ô¤¦¡£ ¥Ñ¥¿¡¼¥ó¤È¥Þ¥Ã¥Á¤¹¤ì¤Ð¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¡¢ ¥Þ¥Ã¥Á¤¹¤ë¥Ñ¥¿¡¼¥ó¤¬¤Ê¤±¤ì¤Ð²¿¤â¼Â¹Ô¤µ¤ì¤Ê¤¤¡£

¤¹¤Ù¤Æ¤Î¥ë¡¼¥ë¤ò½èÍý¤·¤¿¸å¤Çawk¤Ï¼¡¤ÎÆþÎÏ¹Ô¤ÎÆÉ¤ß¹þ¤ß¤ò¹Ô¤¦ (¤·¤«¤·Îã³°¤Ï¤¢¤ë¡£see section next ʸ¡¢see section Using gawk's nextfile Statement)¡£ ¤³¤Îưºî¤Ï¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤Ë㤹¤ë¤Þ¤Ç·«¤êÊÖ¤µ¤ì¤ë¡£

 
/12/  { print $0 }
/21/  { print $0 }
  

¤³¤Îawk¥×¥í¥°¥é¥à¤ÏÆó¤Ä¤Î¥ë¡¼¥ë¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤ë¡£ °ì¤ÄÌܤΥ롼¥ë¤Ï`12'¤È¤¤¤¦Ê¸»úÎó¤ò»ý¤Á¡¢ ¥¢¥¯¥·¥ç¥ó¤Ï`print $0'¤Ç¤¢¤ë¡£ ÆóÈÖÌܤΥ롼¥ë¤Ï`21'¤È¤¤¤¦Ê¸»úÎó¤ò»ý¤Á¡¢¥¢¥¯¥·¥ç¥ó¤È¤·¤Æ `print $0'¤ò»ý¤Ã¤Æ¤¤¤ë¡£³Æ¥ë¡¼¥ë¤Î¥¢¥¯¥·¥ç¥ó¤Ï¤½¤ì¤¾¤ì ¥Ö¥ì¡¼¥¹¤Î¥Ú¥¢¤Ç°Ï¤Þ¤ì¤Æ¤¤¤ë¡£

¤³¤Î awk ¥×¥í¥°¥é¥à¤Ï¡¢Ê¸»ú`12'¤«Ê¸»úÎó`21'¤ò ´Þ¤à¤¹¤Ù¤Æ¤Î¹Ô¤ò½ÐÎϤ¹¤ë¡£ ¤â¤·¹Ô¤ÎÃæ¤ËξÊý¤È¤â¤¢¤ì¤Ð¡¢ ¤½¤Î¹Ô¤Ï¤½¤ì¤¾¤ì¤Î¥ë¡¼¥ëËè¤Ë½ÐÎϤ¬¹Ô¤ï¤ì¤ë¤Î¤Ç·ë²Ì¤È¤·¤ÆÆó²ó½ÐÎϤµ¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£

¤³¤Î¥×¥í¥°¥é¥à¤ò`BBS-list' ¤È `inventory-shipped' ¤ÎÆó¤Ä¤Î¥µ¥ó¥×¥ë¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¼Â¹Ô¤·¤¿¾ì¹ç¤Î·ë²Ì¤Ï¤³¤¦¤Ê¤ë

 
$ awk '/12/ { print $0 }
>      /21/ { print $0 }' BBS-list inventory-shipped
-| aardvark     555-5553     1200/300          B
-| alpo-net     555-3412     2400/1200/300     A
-| barfly       555-7685     1200/300          A
-| bites        555-1675     2400/1200/300     A
-| core         555-2912     1200/300          C
-| fooey        555-1234     2400/1200/300     B
-| foot         555-6699     1200/300          B
-| macfoo       555-6480     1200/300          A
-| sdace        555-3430     2400/1200/300     A
-| sabafoo      555-2127     1200/300          C
-| sabafoo      555-2127     1200/300          C
-| Jan  21  36  64 620
-| Apr  21  70  74 514
  

`BBS-list'¤ÎÃæ¤Î`sabafoo'¤Ç»Ï¤Þ¤ë¹Ô¤¬Æó²ó½ÐÎϤµ¤ì¤Æ¤¤¤ë ¤³¤È¤ËÃíÌÜ¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.5 ¤è¤êÊ£»¨¤ÊÎã

°Ê²¼¤ÎÎã¤Ï¡¢¤¢¤Ê¤¿¤Ëawk¥×¥í¥°¥é¥à¤Î¹Ô¤¦¤³¤È¤Î ŵ·¿Åª¤Ê¥¢¥¤¥Ç¥¢¤òÍ¿¤¨¤ë¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ÎÎã¤Ïawk¤ËÂФ·¤Æ¡¢Â¾¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Î½ÐÎϤòÍ×Ìó¤·¡¢ ÁªÂò¤·¡¢¥¢¥ì¥ó¥¸¤¹¤ë¤¿¤á¤ÎÊýË¡¤ò¼¨¤·¤Æ¤¤¤ë¡£ ¤Þ¤ÀÀâÌÀ¤¬¤µ¤ì¤Æ¤¤¤Ê¤¤µ¡Ç½¤¬»È¤ï¤ì¤Æ¤¤¤ë¤¬¡¢ (¥¹¥¯¥ê¥×¥È¤Î)Á´¤Æ¤¬Íý²ò¤Ç¤­¤Ê¤¯¤Æ¤â¿´ÇÛ¤¹¤ë¤³¤È¤Ï¤Ê¤¤¡£

 
ls -l | awk '$6 == "Nov" { sum += $5 }
             END { print sum }'
  

¤³¤Î¥³¥Þ¥ó¥É¤Ï¥«¥ì¥ó¥È¥Ç¥£¥ì¥¯¥È¥ê¤Ë¤¢¤ë11·î¡Êǯ¤Ï²¿Ç¯¤Ç¤â¤è¤¤¡Ë ¤ËºÇ¸å¤Î½¤Àµ¤¬¤Ê¤µ¤ì¤¿¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤Î¹ç·×¥Ð¥¤¥È¿ô¤ò½ÐÎϤ¹¤ë¡£ (9) Îã¤Î`ls -l' ¤ÎÉôʬ¤Ï¡¢¤¢¤ë¥Ç¥£¥ì¥¯¥È¥êÃæ¤Î¥Õ¥¡¥¤¥ë¤ò¤½¤Î¥µ¥¤¥º¤È ºÇ½ª½¤ÀµÆüÉդȤȤâ¤Ë¥ê¥¹¥È¥¢¥¦¥È¤¹¤ë¤¿¤á¤Î¥³¥Þ¥ó¥É¤Ç¤¢¤ê¡¢ ¤½¤Î½ÐÎϤϰʲ¼¤Î¤è¤¦¤Ê·Á¤Ç¤¢¤ë¡£

 
-rw-r--r--  1 arnold   user   1933 Nov  7 13:05 Makefile
-rw-r--r--  1 arnold   user  10809 Nov  7 13:03 awk.h
-rw-r--r--  1 arnold   user    983 Apr 13 12:14 awk.tab.h
-rw-r--r--  1 arnold   user  31869 Jun 15 12:20 awkgram.y
-rw-r--r--  1 arnold   user  22414 Nov  7 13:03 awk1.c
-rw-r--r--  1 arnold   user  37455 Nov  7 13:03 awk2.c
-rw-r--r--  1 arnold   user  27511 Dec  9 13:07 awk3.c
-rw-r--r--  1 arnold   user   7989 Nov  7 13:03 awk4.c
  

ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤ÏÆÉ¤ß½ñ¤­¤Îµö²Ä¥Õ¥é¥°¡¢ ÆóÈÖÌܤΥե£¡¼¥ë¥É¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Ø¥ê¥ó¥¯¤·¤Æ¤¤¤ë¥ê¥ó¥¯¤Î¿ô¡¢ »°ÈÖÌܤΥե£¡¼¥ë¥É¤Ï¤½¤Î¥Õ¥¡¥¤¥ë¤Î¥ª¡¼¥Ê¡¼¤ÎID¡¢»ÍÈÖÌܤ¬¥Õ¥¡¥¤¥ë¤Î¥°¥ë¡¼¥×¡¢ ¸ÞÈÖÌܤ¬¤½¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤ò¥Ð¥¤¥È¤Çɽ¤·¤¿¤â¤Î¡¢ Ï»,¼·,ȬÈÖÌܤΥե£¡¼¥ë¥É¤ÏºÇ¸å¤Ë¤½¤Î¥Õ¥¡¥¤¥ë¤¬½¤Àµ¤µ¤ì¤¿·î¡¢Æü¡¢»þ´Ö¤Ç¤¢¤ë¡£ ºÇ¸å¤Î¶åÈÖÌܤΥե£¡¼¥ë¥É¤Ï¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ç¤¢¤ë¡£ (10)

¤³¤Îawk¥×¥í¥°¥é¥à¤Î`$6 == "Nov"'¤È¤¤¤¦¼°¤Ï¡¢ `ls -l'¤Î½ÐÎϤÎÏ»ÈÖÌܤΥե£¡¼¥ë¥É¤¬`Nov'¤È¤¤¤¦Ê¸»úÎó¤È ¥Þ¥Ã¥Á¤¹¤ë¤«¤É¤¦¤«¤ò¥Æ¥¹¥È¤·¤Æ¤¤¤ë¡£ `Nov'¤È¤¤¤¦Ê¸»úÎó¤òÏ»ÈÖÌܤΥե£¡¼¥ë¥É¤Ë»ý¤Ä¹Ô¤¬ÆÉ¤ß¹þ¤Þ¤ì¤ë¤¿¤Ó¤Ë ` sum += $5 '¤È¤¤¤¦¥¢¥¯¥·¥ç¥ó¤¬¼Â¹Ô¤µ¤ì¤ë¡£ ¤³¤Î¥¢¥¯¥·¥ç¥ó¤Ç¤Ï¡¢¸ÞÈÖÌܤΥե£¡¼¥ë¥É¡Ê¥Õ¥¡¥¤¥ë¥µ¥¤¥º¡Ë¤òsum ¤È¤¤¤¦ÊÑ¿ô¤Ë­¤·¹þ¤ó¤Ç¤¤¤ë¡£·ë²Ì¤È¤·¤Æ¡¢ sum¤Ï¥Ñ¥¿¡¼¥ó¤Ë¥Þ¥Ã¥Á¤·¤¿¹Ô¤Î¥Õ¥¡¥¤¥ë¤ÎÂ礭¤µ¤Î¹ç·×¤òɽ¤¹ (awk¤ÎÊÑ¿ô¤Ï¡¢¼«Æ°Åª¤Ë 0¤Ç½é´ü²½¤µ¤ì¤Æ¤¤¤ë)¡£

ls ¤Î½ÐÎϤ«¤éÅϤµ¤ì¤ëºÇ¸å¤Î¹Ô¤¬½èÍý¤µ¤ì¤¿¸å¤Ç END¥ë¡¼¥ë¤¬¼Â¹Ô¤µ¤ì¡¢ sum¤ÎÃͤ¬½ÐÎϤµ¤ì¤ë¡£ ¤³¤ÎÎã¤Ç¤Ï¡¢ sum¤ÎÃͤÏ80600¤Ë¤Ê¤ë¤À¤í¤¦¡£

¤³¤¦¤¤¤Ã¤¿Îà¤Î¹âÅÙ¤Êawk¤Î»È¤¤Êý¤Ï¸å¤ÎÊý¤Î¥»¥¯¥·¥ç¥ó¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë (see section ¥¢¥¯¥·¥ç¥ó)¤±¤ì¤É¤â¡¢ ¤½¤ÎÍͤʻȤ¤Êý¤ò³Ð¤¨¤ëÁ°¤Ë¤É¤Î¤è¤¦¤ËÆþÎϤ¬²ò¼á¤µ¤ì¡¢ ¤É¤Î¤è¤¦¤Ë½ÐÎϤ¬É½¼¨¤µ¤ì¤ë¤«¤òÃΤ俤ۤ¦¤¬¤è¤¤¤À¤í¤¦¡£ ¥Õ¥£¡¼¥ë¥É¤òÁàºî¤·¡¢printʸ¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢ Í­ÍѤʤ½¤·¤Æ²Ú¤ä¤«¤Ê¸«±É¤¨¤Î¤¹¤ë¥ì¥Ý¡¼¥È¤òºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.6 awk Statements Versus Lines

¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢awk¥×¥í¥°¥é¥à¤Î³Æ¹Ô¤Ï¼¡¤ÎÎã¤Ë¤ß¤é¤ì¤ë¤è¤¦¤ËÆÈΩ¤·¤¿Ê¸¡¢ ¤¢¤ë¤¤¤ÏÆÈΩ¤·¤¿¥ë¡¼¥ë¤Ç¤¢¤ë¡£

 
awk '/12/  { print $0 }
     /21/  { print $0 }' BBS-list inventory-shipped
  

¤·¤«¤·¡¢gawk¤Ï°Ê²¼¤Ëµó¤²¤ë¤â¤Î¤Ë³¤¯²þ¹Ô¤Ï̵»ë¤¹¤ë¡£

 
,    {    ?    :    ||    &&    do    else
  

¤½¤Î¾¤Î¾ì½ê¤Ë¤¢¤ë²þ¹Ô¤Ïʸ¤Î½ªÃ¼¤È¤·¤ÆÇ§¼±¤µ¤ì¤ë¡£ (11)

°ì¤Ä¤Îʸ¤òÆó¤Ä¤Î¹Ô¤Ë²þ¹Ô¤Çʬ¤±¤¿¤¤¤È¤­¤Ë¡¢ ¹ÔËö¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å`\'(ÌõÃí: ÆüËܸì´Ä¶­¤Ç¤Ï±ßµ­¹æ) ¤òÃÖ¤¯¤³¤È¤Ë¤è¤Ã¤Æ¹Ô¤ò·Ñ³¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë¹Ô¤Î·Ñ³¤Ï¤É¤³¤Ë¤Ç¤âÃÖ¤¯¤³¤È¤¬¤Ç¤­¤ë¡£ ¤¿¤È¤¨Ê¸»úÎó¤äÀµµ¬É½¸½¤ÎÅÓÃæ¤Ç¤¢¤Ã¤Æ¤â²Äǽ¤Ç¤¢¤ë¡£Î㤨¤Ð

 
awk '/This regular expression is too long, so continue it\
 on the next line/ { print $1 }'
  

¤³¤ÎWeb ¥Ú¡¼¥¸¤Ë¤¢¤ë¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ç¤Ï¡¢ Ä̾ï¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë·Ñ³¤ò»ÈÍѤ·¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¡¢gawk¤Ë¤Ï°ì¹Ô¤ÎŤµ¤ËÀ©¸Â¤¬¤Ê¤¯ ·Ñ³¤ÎɬÍפ¬Á´¤¯¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£ ¤Þ¤¿¡¢·Ñ³¤ò»È¤ï¤Ê¤¤¤³¤È¤Ë¤è¤Ã¤Æ¥×¥í¥°¥é¥à¤¬¤è¤êÆÉ¤ß¤ä¤¹¤¯¤Ê¤ë¤È¤¤¤¦¤³¤È¤â¤¢¤ë¡£ Ʊ¤¸Íýͳ¤Ë¤è¤Ã¤Æ¡¢¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ç¤Ï¤Û¤È¤ó¤É¤Îʸ¤òû¤¯ÊݤäƤ¤¤ë¡£ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë·Ñ³¤Ï¡¢¤¢¤Ê¤¿¤Îawk¥×¥í¥°¥é¥à¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Ç ¥¿¥¤¥×¤µ¤ì¤ë¤â¤Î¤ÎÂå¤ï¤ê¤Ëʬ³ä¤µ¤ì¤¿¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤Ç¤¢¤ë¤È¤­¤ËÈó¾ï¤ËÊØÍø¤Ç¤¢¤ë¡£ ¤³¤³¤Ç¡¢¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë¹Ô·Ñ³¤Ï³Æawk½èÍý·Ï¤Î¼ÂÁõ¤Ë°Í¸¤¹¤ë¤â¤Î¤Ç ¤¢¤ë¤³¤È¤ËÃí°Õ¤¹¤ë¤Ù¤­¤Ç¤¢¤ë¡£¤¿¤È¤¨¤Ð¡¢ ʸ»úÎóÄê¿ô¤ò¹Ô·Ñ³¤ò»È¤Ã¤ÆÊ¬³ä¤¹¤ë¤³¤È¤òµö¤·¤Æ¤¤¤Ê¤¤½èÍý·Ï¤¬¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¤¢¤Ê¤¿¤ÎºîÀ®¤¹¤ëawk¥×¥í¥°¥é¥à¤Î°Ü¿¢À­¤òºÇÂç¸Â¤ËÊݤĤ¿¤á¤Ë¤Ï¡¢ Àµµ¬É½¸½¤äʸ»úÎó¤ÎÅÓÃæ¤Ç¤Î¹Ô¤Îʬ³ä¤ò¹Ô¤ï¤Ê¤¤¤³¤È¤¬ºÇÎɤμêÃʤǤ¢¤ë¡£

·Ù¹ð: ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë¹Ô¤Î·Ñ³¤Ï C¥·¥§¥ë¤Ç¤Ï¤³¤Î¥Þ¥Ë¥å¥¢¥ë¤Ë½ñ¤«¤ì¤Æ¤¤¤ëÄ̤ê¤Ë¤Ïưºî¤·¤Ê¤¤¡£ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë¹Ô·Ñ³¤Ï¥Õ¥¡¥¤¥ë¤Ëµ­½Ò¤µ¤ì¤¿ awk¥×¥í¥°¥é¥à¤ä Bourne ¥·¥§¥ë¡¢ Bash(GNU Bourne-Again shell)Åù¤ÎPOSIX ¤Ë½¾¤Ã¤¿¥·¥§¥ë¤Ç¤Î one-shot programs¤Ç¤ÏƯ¤¯¤¬¡¢ C¥·¥§¥ë(csh)¤Ç¤Ï¤½¤¦¤Ç¤Ï¤Ê¤¤! C¥·¥§¥ë¤Î¾ì¹ç¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò²þ¹Ô¤ÎÁ°¤ËÆó¤Ä³¤±¤Æ½ñ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ƱÍͤˡ¢C¥·¥§¥ë¤ò»È¤Ã¤Æ¤¤¤ë¤È¤­ ¤Ë¤Ï awk¥×¥í¥°¥é¥à¤Î¤¹¤Ù¤Æ¤Î¹Ô¤Î²þ¹Ô¤ò¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç ¥¨¥¹¥±¡¼¥×¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤³¤È¤Ëµ¤¤ò¤Ä¤±¤ë¤³¤È¡£Îã¤òµó¤²¤è¤¦¡£

 
% awk 'BEGIN { \
?   print \\
?       "hello, world" \
? }'
-| hello, world
  

¤³¤³¤Ç¡¢`%' ¤ä `?'¤Ï¤½¤ì¤¾¤ìC¥·¥§¥ë¤Î°ì¼¡¥×¥í¥ó¥×¥È¤ÈÆó¼¡¥×¥í¥ó¥×¥È¤Ç¤¢¤ë (ɸ½à¥·¥§¥ë¤Ç¤Ï `$'¤È`>')¡£

POSIX½àµò¤Î¥·¥§¥ë¤Ç¤Ï¤É¤¦¤Ê¤ë¤«ÂÐÈæ¤·¤Æ¤ß¤è¤¦

 
$ awk 'BEGIN {
>   print \
>       "hello, world"
> }'
-| hello, world
  

awk¤Ï¹Ô»Ø¸þ¤Î¸À¸ì¤Ç¤¢¤ë¡£ ³Æ¡¹¤Î¥ë¡¼¥ë¤Î¥¢¥¯¥·¥ç¥ó¤Ï¥Ñ¥¿¡¼¥ó¤È¤·¤ÆÆ±¤¸¹Ô¤ËÃÖ¤«¤Í¤Ð¤Ê¤é¤Ê¤¤¡£ ¥Ñ¥¿¡¼¥ó¤È¥¢¥¯¥·¥ç¥ó¤òʬ³ä¤·¤¿¹Ô¤ËÃÖ¤¯¤Ë¤Ï¡¢ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë¹Ô·Ñ³¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë·Ñ³¤È¥³¥á¥ó¥È¤È¤òº®¤¼¤Ê¤¤¤è¤¦¤Ëµ¤¤ò¤Ä¤±¤è¤¦¡£ awk¤Ï`#'¤ò¸«¤Ä¤±¤ë¤ä¤¤¤Ê¤ä¥³¥á¥ó¥È¤¬»Ï¤ë¤È¤ß¤Ê¤·¡¢ ¤½¤³¤«¤é¡¢¹Ô¤Î¸å¤Î¤Û¤¦¤Ï¤¹¤Ù¤ÆÌµ»ë¤¹¤ë¡£Îã¤òµó¤²¤ë¡£

 
$ gawk 'BEGIN { print "dont panic" # a friendly \
>                                    BEGIN rule
> }'
error--> gawk: cmd. line:2:                BEGIN rule
error--> gawk: cmd. line:2:                ^ parse error
  

In this case, it looks like the backslash would continue the comment onto the next line. However, the backslash-newline combination is never even noticed because it is ``hidden'' inside the comment. Thus, the BEGIN is noted as a syntax error. ¤³¤³¤Ç¡¢¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ï¥³¥á¥ó¥È¤ò¼¡¤Î¹Ô¤Ë·Ñ³¤·¤Æ¤¤¤ë¤è¤¦¤Ë¤ß¤¨¤ë¡£ ¤É¤ó¤Ê¤ä¤êÊý¤Ç¤â¡¢¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤È²þ¹Ô¤ÎÁȤ߹ç¤ï¤»¤Ï·è¤·¤Æ (awk¤Ë¤Ï) µ¤¤Å¤«¤ì¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¡¢¤½¤ì(¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¡Ë¤¬¡¢¥³¥á¥ó¥È¤ÎÆâÉô¤Ë¡È±£¤ì¤¿¡É¤«¤é¤Ç¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢BEGIN¤Ïʸˡ¥¨¥é¡¼¤È¤·¤Æ»ØÅ¦¤µ¤ì¤ë¡£

°ì¤Ä¤Î¥ë¡¼¥ë¤ÎÃæ¤Ë¤¢¤ëawk¤Îʸ¤¬Ã»¤¤¤È¤­¤Ë¤Ï¡¢ ¤½¤ì¤ò°ì¹Ô¤Ë¤¤¤¯¤Ä¤â¤Þ¤È¤á¤Æ½ñ¤­¤¿¤¤¤È¹Í¤¨¤ë¤À¤í¤¦¡£ ¤½¤Î¤¿¤á¤Ë¤Ï¥»¥ß¥³¥í¥ó`;'¤ò»È¤Ã¤ÆÊ¸¤ò¶èÀڤ롣 ¤³¤ì¤Ï¥ë¡¼¥ë¤½¤ì¼«¿È¤Ë¤âŬÍѤǤ­¤ë¡£¤·¤¿¤¬¤Ã¤Æ¡¢ ¤³¤Î¥»¥¯¥·¥ç¥ó¤ÎºÇ½é¤Ë¤¢¤Ã¤¿Îã¤Ï¤³¤Î¤è¤¦¤Ë½ñ¤¯¤³¤È¤â¤Ç¤­¤ë¡£

 
/12/ { print $0 } ; /21/ { print $0 }
  

Ãí°Õ: ¥ª¥ê¥¸¥Ê¥ë¤Îawk¸À¸ì¤Ç¤Ï¡¢ Ʊ¤¸¹Ô¤Ë¤¢¤ë¥ë¡¼¥ë¤ò¥»¥ß¥³¥í¥ó¤Ç¶èÀÚ¤é¤Ê¤¯¤Æ¤âÎɤ«¤Ã¤¿¡£ ¤³¤ì(¥»¥ß¥³¥í¥ó¤Ç¥ë¡¼¥ë¤ò¶èÀڤ뤳¤È)¤Ï¥¢¥¯¥·¥ç¥óÃæ¤Ë¤¢¤ë¥¹¥Æ¡¼¥È¥á¥ó¥È¤Î °·¤¤¤È¤Î°ì´ÓÀ­¤ò¤È¤ë¤¿¤á¤ËÉÕ¤±²Ã¤¨¤é¤ì¤¿¤â¤Î¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.7 awk ¤Î¤½¤Î¾¤Îµ¡Ç½

awk¤Ï¡¢ºîÀ®¤·¤¿¥×¥í¥°¥é¥à¤¬awk¤«¤é¾ðÊó¤òÆÀ¤ë¤¿¤á¤Î Áȹþ¤ß¤Ç¤¢¤é¤«¤¸¤áÄêµÁ¤µ¤ì¤Æ¤¤¤ë´ö¤Ä¤«¤ÎÊÑ¿ô¤òÄ󶡤·¤Æ¤¤¤ë¡£ ¤½¤Î¾¤Ë¤â¡¢¥×¥í¥°¥é¥àÃæ¤Çawk¤¬¤É¤Î¤è¤¦¤Ë¥Ç¡¼¥¿¤ò½èÍý¤¹¤ë¤«¤ò À©¸æ¤¹¤ë¤¿¤á¤ÎÊÑ¿ô¤¬¤¢¤ë¡£

¤µ¤é¤Ë¡¢awk¤Ï°ìÈÌŪ¤Ê·×»»¤äʸ»úÎóÁàºî¤ò¤ª¤³¤Ê¤¦¤¿¤á¤ÎÁȹþ¤ß´Ø¿ô¤òÄ󶡤·¤Æ¤¤¤ë¡£ gawk¤Ï¥¿¥¤¥à¥¹¥¿¥ó¥×¡¢¥Ó¥Ã¥ÈÁàºî¡¢¼Â¹Ô»þ¤Îʸ»úÎóÊÑ´¹¤ò ¹Ô¤¦¤¿¤á¤ÎÁȤ߹þ¤ß´Ø¿ô¤òÄ󶡤·¤Æ¤¤¤ë¡£

²æ¡¹¤Ïawk¸À¸ì¤ò³«È¯¤¹¤ë¤È¤­¤Ë¡¢ÊÑ¿ô¤ÎÂçÉôʬ¤È ¿¤¯¤Î´Ø¿ô¤òƳÆþ¤·¤¿¡£¤½¤ì¤é¤ÏÁȤ߹þ¤ßÊÑ¿ô¤ÈÁȤ߹þ¤ß´Ø¿ô¤Ë ¥·¥¹¥Æ¥Þ¥Á¥Ã¥¯¤ËÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

1.8 awk ¤ò»È¤¦¤È¤­

(See section ¤è¤êÊ£»¨¤ÊÎã.) ¤¢¤Ê¤¿¤Ï¡¢awk¤¬¤¢¤Ê¤¿¤Ë¤È¤Ã¤ÆÌò¤ËΩ¤Ä¤Î¤«¤É¤¦¤«¤ò µ¿Ìä¤Ë»×¤¦¤«¤â¤·¤ì¤Ê¤¤¡£¥æ¡¼¥Æ¥£¥ê¥Æ¥£¥×¥í¥°¥é¥à¤ä¥Ñ¥¿¡¼¥ó¡¢ ¥Õ¥£¡¼¥ë¥É¤Îʬ³ä¡¢»»½Ñʸ¡¢¤Ê¤É¤ÎÁªÂò´ð½à¤ò»È¤Ã¤Æ¡¢ ¤è¤êÊ£»¨¤Ê½ÐÎϤòºîÀ®¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ awk¸À¸ì¤Ïls ¤Î¤è¤¦¤Ê¤Û¤«¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Î½ÐÎϤ«¤é¤Î¾ðÊó¤òÍ×Ì󤹤ë¤è¤¦¤Ê¡¢ Â礭¤ÊÀ¸¥Ç¡¼¥¿¤«¤é¥ì¥Ý¡¼¥È¤òÀ¸À®¤¹¤ë¤è¤¦¤Êºî¶È¤ËÊØÍø¤Ç¤¢¤ë¡£

awk¤Ç½ñ¤«¤ì¤¿¥×¥í¥°¥é¥à¤Ï¡¢Ä̾ï¤Ï¾¤Î¸À¸ì¤Ç½ñ¤¤¤¿¤â¤Î¤è¤ê¤â¾®¤µ¤¯¤Ê¤ë¡£ ¤³¤ì¤Ïawk¥×¥í¥°¥é¥à¤ÎºîÀ®¤È»ÈÍѤò´Êñ¤Ë¤¹¤ë¡£ ¤·¤Ð¤·¤Ð¡¢awk¥×¥í¥°¥é¥à¤Ï¥¿¡¼¥ß¥Ê¥ë¤Ç¨ºÂ¤ËºîÀ®¤·¡¢ °ìÅÙ¤À¤±»È¤Ã¤Æ¼Î¤Æ¤Æ¤·¤Þ ¤¦¤È¤¤¤¦¤³¤È¤â¤Ç¤­¤ë¡£ awk¥×¥í¥°¥é¥à¤Ï¥¤¥ó¥¿¡¼¥×¥ê¥Ã¥È¤µ¤ì¤ë¤¿¤á¤Ë¡¢ ¥¨¥Ç¥£¥Ã¥È-¥³¥ó¥Ñ¥¤¥ë-¥Æ¥¹¥È-¥Ç¥Ð¥Ã¥°¤È¤¤¤¦¥½¥Õ¥È¥¦¥§¥¢³«È¯¤Î ŵ·¿Åª¤Ê¥µ¥¤¥¯¥ë¤òÈò¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¤Î¤Ç¤¢¤ë¡£

´°Á´¤Ëretargetable¤Ê8¥Ó¥Ã¥È¥Þ¥¤¥¯¥í¥×¥í¥»¥Ã¥µÍѤΥ¢¥»¥ó¥Ö¥é (¾Ü¤·¤¯¤Ïsee section ÍѸ콸)¤ä¡¢ ÆÃ¼ìÌÜŪÍÑProlog¥³¥ó¥Ô¥å¡¼¥¿ÍѤΥޥ¤¥¯¥í¥³¡¼¥É¥¢¥»¥ó¥Ö¥é¤Î¤è¤¦¤Ê Ê£»¨¤Ê¥×¥í¥°¥é¥à¤¬awk¤ò»È¤Ã¤Æµ­½Ò¤µ¤ì¤¿¤³¤È¤¬¤¢¤ë¡£ ºÇ¶á¤Ç¤Ï¡¢gawk¤¬Wiki¥¯¥í¡¼¥ó¤òµ­½Ò¤¹¤ë¤Î¤ËÍѤ¤¤é¤ì¤¿(12)¡£¥ª¥ê¥¸¥Ê¥ë¤Îawk¤ÎǽÎϤϤ½¤Î¤è¤¦¤ÊÊ£»¨¤Ê¤³¤È¤ò¤³¤Ê¤¹¤Ë¤Ï µ¡Ç½¤¬À©¸Â¤µ¤ì¤Æ¤¤¤¿¤¬¡¢ºÇ¶á¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¤è¤ê¿µ¡Ç½¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ Bell¸¦¥Ð¡¼¥¸¥ç¥ó¤Îawk¤Ç¤µ¤Ø´ö¤Ä¤«¤Î¤¢¤é¤«¤¸¤á·è¤á¤é¤ì¤¿ À©¸Â¤¬¤¢¤ë¤¬°ÊÁ°¤Î¤â¤Î¤è¤ê¤æ¤ë¤¤¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¢¤ë¡£

2¡¢300¹Ô°Ê¾å¤Îawk¥¹¥¯¥ê¥×¥È¤ò½ñ¤¯¤è¤¦¤Ë¤Ê¤Ã¤¿¤È¤­¡¢ °ã¤Ã¤¿¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î»ÈÍѤò¹Í¤¨¤Æ¤¤¤ë¤³¤È¤Ëµ¤¤¬¤Ä¤¯¤À¤í¤¦¡£ Emacs Lisp ¤Ï¡¢Ê¸»úÎó¤ä¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¥ó¥°¤ò°·¤¦¹âÅÙ¤ÊǽÎϤòɬÍפȤ¹¤ë¤È¤­¤Ë¤Ï ¤è¤¤ÁªÂò¤È¤¤¤¨¤ë¡£¥·¥§¥ë¤â¤Þ¤¿Ê¸»úÎó¤ä¥Ñ¥¿¡¼¥ó¥Þ¥Ã¥Á¥ó¥°¤ò°·¤¦Ç½ÎϤ¬¤¢¤ê¡¢ ¤½¤ì¤Ë²Ã¤¨¤Æ¶¯ÎϤÇÊØÍø¤Ê¥·¥¹¥Æ¥à¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»È¤¦»ö¤¬¤Ç¤­¤ë¡£ ¤è¤êÅÁÅýŪ¤Ê¸À¸ì¡¢C¤äC++¡¢Java¤È¤¤¤Ã¤¿¤â¤Î¤Ï¡¢¥· ¥¹¥Æ¥à¥×¥í¥°¥é¥ß¥ó¥°¤äÂ礭¤Ê¥×¥í¥°¥é¥à¤ÎÊ£»¨¤µ¤ò´ÉÍý¤¹¤ë¤Î¤ËÊØÍø¤Ç¤¢¤ë¤À¤í¤¦¡£ ¤³¤ì¤é¤Î¸À¸ì¤Çµ­½Ò¤·¤¿¥×¥í¥°¥é¥à¤Ï¡¢Æ±¤¸ºî¶È¤ò¤¹¤ë awk ¥×¥í¥°¥é¥à¤è¤ê¤â ¿¤¯¤Î¹Ô¿ô¤òɬÍפȤ¹¤ë¤«¤âÃΤì¤Ê¤¤¤¬¡¢¤è¤êÍ­¸ú¤Ë¼Â¹Ô¤·¤¿¤ê¡¢´Êñ¤Ë¥á¥ó¥Æ¥Ê¥ó¥¹¤Ç¤­¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2. Àµµ¬É½¸½

Àµµ¬É½¸½(regular expression ¤Þ¤¿¤Ï regexp)¤È¤Ï¡¢Ê¸»úÎó¤Î½¸¹ç¤òɽ¸½¤¹¤ëÊýË¡¤Ç¤¢¤ë¡£ Àµµ¬É½¸½¤Ïawk¥×¥í¥°¥é¥ß¥ó¥°¤Ë¤ª¤¤¤ÆÈó¾ï¤Ë´ðËÜŪ¤ÊÉôʬ¤Ç¤¢¤ë¤Î¤Ç¡¢ ¤½¤Î½ñ¼°¤È»È¤¤Êý¤Ï¾Ï¤òʬ¤±¤ÆÀâÌÀ¤¹¤ë¤ËÃͤ¹¤ë¡£

¥¹¥é¥Ã¥·¥å(`/')¤Ë°Ï¤Þ¤ì¤¿Àµµ¬É½¸½¤Ï¡¢ ¤½¤ÎÀµµ¬É½¸½¤¬¼¨¤¹½¸¹ç¤Ë°¤¹¤ë¥Æ¥­¥¹¥È¤¬´Þ¤Þ¤ì¤ëÁ´¤Æ¤ÎÆþÎϥ쥳¡¼¥É¤Ë¥Þ¥Ã¥Á¤¹¤ë awk¤Î¥Ñ¥¿¡¼¥ó¤Ç¤¢¤ë¡£ ¤â¤Ã¤È¤âñ½ã¤ÊÀµµ¬É½¸½¤Ï¡¢Ê¸»ú¤ä¿ô»ú¡¢¤â¤·¤¯¤Ï¤½¤ÎξÊý¤ÎʤӤǤ¢¤ë¡£ ¤³¤Î¤è¤¦¤ÊÀµµ¬É½¸½¤Ï¤½¤Î¤è¤¦¤ÊʤӤò´Þ¤àǤ°Õ¤Îʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢`foo'¤È¤¤¤¦Àµµ¬É½¸½¤Ï`foo'¤ò´Þ¤àǤ°Õ¤Îʸ»úÎó¤Ë ¥Þ¥Ã¥Á¤¹¤ë¤³¤È¤Ë¤Ê¤ë¡£ ¤½¤ì¤Ë¤è¤ê¡¢/foo/¤È¤¤¤¦¥Ñ¥¿¡¼¥ó¤Ï¥ì¥³¡¼¥É¤Î¤É¤³¤Ç¤¢¤Ã¤Æ¤â `foo'¤È¤¤¤¦»°Ê¸»ú¤ò´Þ¤àÆþÎϥ쥳¡¼¥É¤Ë¥Þ¥Ã¥Á¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤Î¤Ç¤¢¤ë¡£ ¾¤Î¼ïÎà¤ÎÀµµ¬É½¸½¤Ï¡¢¤¢¤Ê¤¿¤¬¤è¤êÊ£»¨¤Êʸ»úÎó¤Î½¸¹ç¤ò»ØÄê¤Ç¤­¤ë¤è¤¦¤Ë¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£

Initially, the examples in this ¾Ï are simple. As we explain more about how regular expressions work, we will present more complicated instances.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.1 Àµµ¬É½¸½¤Î»È¤¤Êý

Àµµ¬É½¸½¤Ï¥¹¥é¥Ã¥·¥å¤Ç°Ï¤Þ¤ì¤¿¥Ñ¥¿¡¼¥ó¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤Î¤è¤¦¤ÊÀµµ¬É½¸½¤Ï³Æ¥ì¥³¡¼¥É¤Î¥Æ¥­¥¹¥ÈÁ´ÂΤËÂФ·¤Æ¤Î¥Æ¥¹¥È¤¬¹Ô¤ï¤ì¤ë (Ä̾ï¤Ï¡¢À®¸ù¤«¤É¤¦¤«¤ò·è¤á¤ë¤Ë¤Ï¥Æ¥­¥¹¥È¤Î°ìÉôʬ¤À¤±¸«¤ì¤ÐÎɤ¤)¡£ °Ê²¼¤Ëµó¤²¤ëÎã¤Ï`foo'¤ò´Þ¤à¥ì¥³¡¼¥É¤ÎÂèÆó¥Õ¥£¡¼¥ë¥É¤ò½ÐÎϤ¹¤ë¡£

 
$ awk '/foo/ { print $2 }' BBS-list
-| 555-1234
-| 555-6699
-| 555-6480
-| 555-2127
  

~ (tilde), ~ operator Àµµ¬É½¸½¤Ï¤Þ¤¿¡¢¥Þ¥Ã¥Á¥ó¥°¼°¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ì¤é¤Î¼°¤Ï¥Þ¥Ã¥Á¥ó¥°¤ò»î¤ß¤ëʸ»úÎó¤òÆÃÄꤹ¤ë¤³¤È¤òµö¤·¡¢ ¥«¥ì¥ó¥ÈÆþÎϥ쥳¡¼¥ÉÁ´ÂΤȥޥåÁ¥ó¥°¤¹¤ë¤³¤È¤ò¤·¤Ê¤¤¤ÇºÑ¤à¤è¤¦¤Ë¤Ç¤­¤ë¡£ `~'¤È `!~'¤È¤¤¤¦Æó¤Ä¤Î±é»»»Ò¤ÏÀµµ¬É½¸½¤ÎÈæ³Ó¤ò¤ª¤³¤Ê¤¦¡£ ¤³¤ì¤é¤Î±é»»»Ò¤ò»È¤Ã¤¿¼°¤Ï¥Ñ¥¿¡¼¥ó¤È¤·¤Æ¤ä»È¤Ã¤¿¤ê¡¢ if¡¢ while¡¢for¡¢doÊ¸Ãæ¤Ç»È¤¦¤³¤È¤È¤¬¤Ç¤­¤ë (See section ¥¢¥¯¥·¥ç¥óÃæ¤ÎÀ©¸æÊ¸)¡£

 
exp ~ /regexp/
  

¤³¤ì¤Ïexp(ʸ»ú¤È¤·¤Æ°·¤ï¤ì¤ë)¤È¤¤¤¦¼°¤¬regexp ¤È¥Þ¥Ã¥Á¤¹¤ë¤È¤­¤Ë¿¿¤È¤Ê¤ë¡£ °Ê²¼¤Ëµó¤²¤ëÎã¤Ï¡¢Âè°ì¥Õ¥£¡¼¥ë¥É¤ËÂçʸ»ú¤Î`J' ¤ò´Þ¤ó¤Ç¤¤¤ëÆþÎϥ쥳¡¼¥É¤ò¤¹¤Ù¤ÆÁªÂò¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£

 
$ awk '$1 ~ /J/' inventory-shipped
-| Jan  13  25  15 115
-| Jun  31  42  75 492
-| Jul  24  34  67 436
-| Jan  21  36  64 620
  

¤³¤¦½ñ¤¤¤Æ¤âÎɤ¤¡£

 
awk '{ if ($1 ~ /J/) print }' inventory-shipped
  

°Ê²¼¤ÎÎã¤Ïexp(ʸ»úÎó¤È¤·¤Æ°·¤ï¤ì¤ë)¤È¤¤¤¦¼°¤¬ regexp¤Ë¥Þ¥Ã¥Á¤·¤Ê¤¤¤È¤­¤Ë¿¿¤È¤Ê¤ë¡£ ¼¡¤Ëµó¤²¤ëÎã¤Ç¤Ï¡¢ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤ËÂçʸ»ú¤Î `J'¤ò´Þ¤Þ¤Ê¤¤ÆþÎϥ쥳¡¼¥É¤¹¤Ù¤Æ¤òÁªÂò¤¹¤ë¡£

 
exp !~ /regexp/
  

°Ê²¼¤ÎÎã¤Ï¡¢¤¹¤Ù¤Æ¤ÎÆþÎϥ쥳¡¼¥É¤Î¤¦¤Á Âè°ì¥Õ¥£¡¼¥ë¥É¤ËÂçʸ»ú¤Î`J'¤ò´Þ¤ó¤Ç¤¤¤Ê¤¤¤â¤Î¤ò ¼è¤ê½Ð¤¹¡£

 
$ awk '$1 !~ /J/' inventory-shipped
-| Feb  15  32  24 226
-| Mar  15  24  34 228
-| Apr  31  52  63 420
-| May  16  34  29 208
…
  

Àµµ¬É½¸½¤¬/foo/¤Î¤è¤¦¤Ë¥¹¥é¥Ã¥·¥å¤Ç°Ï¤Þ¤ì¤Æµ­½Ò¤µ¤ì¤¿¤È¤­¡¢ ¤³¤ì¤òÀµµ¬É½¸½Äê¿ô(regexp constant)¤È¸Æ¤Ö¡£ ¤³¤ì¤Ï5.27¤Î¤è¤¦¤Ê¿ôÃÍÄê¿ô¤ä "foo"¤Î¤è¤¦¤Êʸ»úÎóÄê¿ô¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.2 ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹

°ìÉô¤Î¥­¥ã¥é¥¯¥¿¤Ï¡¢"foo"¤Î¤è¤¦¤Êʸ»úÎóÄê¿ô¤ä /foo/¤Î¤è¤¦¤ÊÀµµ¬É½¸½Äê¿ô¤Ë¤½¤Î¤Þ¤Þ¤Î·Á¤Ç´Þ¤á¤ë»ö¤¬¤Ç¤­¤Ê¤¤¡£ ¤³¤Î¤è¤¦¤Ê¥­¥ã¥é¥¯¥¿¤Ï¡¢¥­¥ã¥é¥¯¥¿¤½¤Î¤â¤Î¤Ç¤Ï¤Ê¤¯ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å(`\'¤Ç»Ï ¤Þ¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹)¤ò Âå¤ï¤ê¤Ë»È¤¦¤³¤È¤Çʸ»úÎó¤Ê¤É¤Ë´Þ¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î°ì¤Ä¤ÎÍÑÅÓ¤Ïʸ»úÎóÄê¿ô¤ËÆó½Å°úÍÑÉä¤ò´Þ¤á¤ë¤¿¤á¤Ç¤¢¤ë¡£ À¸¤ÎÆó½Å°úÍÑÉä¤Ïʸ»úÎó¤Î½ªÃ¼¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤¿¤á¡¢ ¤½¤ì¤¬Æó½Å°úÍÑÉä¤Î¥­¥ã¥é¥¯¥¿¤½¤Î¤â¤Î¤Ç¤¢¤ë¤³¤È¤òÌÀ¼¨¤¹¤ë¤¿¤á¤Ë `\"'¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£Îã¤òµó¤²¤è¤¦¡£

 
$ awk 'BEGIN { print "He said \"hi!\" to her." }'
-| He said "hi!" to her.
  

¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¥­¥ã¥é¥¯¥¿¤½¤ì¼«¿È¤Ï¡¢¤½¤Î¤Þ¤Þ´Þ¤à¤³¤È¤Î¤Ç¤­¤Ê¤¤¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¡£ ʸ»úÎó¤äÀµµ¬É½¸½Ãæ¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò°ì¤Ä´Þ¤á¤ë¤Ë¤Ï¡¢ `\\' ¤Èµ­½Ò¤¹¤ë¡£¤·¤¿¤¬¤Ã¤Æ¡¢ `"' ¤È `\'¤È¤¤¤¦Æó¤Ä¤Î¥­¥ã¥é¥¯¥¿¤«¤é¤Ê¤ëʸ»úÎó¤Ï "\"\\"¤Èµ­½Ò¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

¤â¤¦°ì¤Ä¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ÎÍÑÅӤϡ¢¥¿¥Ö¤È¤«²þ¹Ô¤Î¤è¤¦¤ÊÈó°õ»ú¥­¥ã¥é¥¯¥¿ (unprintable characters)¤òɽ¤¹¤¿¤á¤Î¤â¤Î¤Ç¤¢¤ë¡£ Èó°õ»ú¥­¥ã¥é¥¯¥¿¤ò¤½¤Î¤Þ¤Þʸ»úÎóÄê¿ô¤äÀµµ¬É½¸½Äê¿ô¤Ë´Þ¤á¤Æ¤·¤Þ¤¦¤È ¿ʬ¸«¤Å¤é¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¡£

°Ê²¼¤Ëawk¤Ç»È¤ï¤ì¤ëÁ´¤Æ¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤òµó¤²¤ë¡£ ÆÃ¤ËÃǤ꤬¤Ê¤¤¸Â¤ê¡¢¤³¤ì¤é¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹Á´¤Æ¤Ïʸ»úÎóÄê¿ô¤È Àµµ¬É½¸½Äê¿ô¤ÎξÊý¤ËŬÍѤµ¤ì¤ë¡£

\\

`\'¤½¤Î¤â¤Î¡£

\a

``·Ù¹ð''¥­¥ã¥é¥¯¥¿¡¼¡£Ctrl-g¤Ç¤¢¤ê¡¢ASCII¤Îcode 7 (BEL) (Ä̾ï¤Ï²¿¤é¤«¤Î²»¤¬½Ð¤ë')¡£

\b

¸åÂà¡£Ctrl-h¤Ç¤¢¤ê¡¢ASCII ¤Î code 8 (BS)

\f

²þ¥Ú¡¼¥¸¡£Ctrl-l¤Ç¤¢¤ê¡¢ASCII ¤Î code 12 (FF)

\n

²þ¹Ô¡£Ctrl-j¤Ç¤¢¤ê¡¢ASCII ¤Î code 10 (LF)

\r

Éüµ¢¡£Ctrl-m¤Ç¤¢¤ê¡¢ASCII ¤Î code 13 (CR)

\t

¿åÊ¿¥¿¥Ö¡£Ctrl-i¤Ç¤¢¤ê¡¢ASCII ¤Î code 9 (HT)

\v

Vertical tab, Ctrl-k, ASCII code 11 (VT). ¿âľ¥¿¥Ö¡£Ctrl-k¤Ç¤¢¤ê¡¢ASCII ¤Î code 11 (VT)

\nnn

Ȭ¿Ê¿ôÃÍnnn¤ÎÃÍ¡£nnn¤Ï`0'¤«¤é`7'¤Þ¤Ç¤Î¿ô»ú¤Î°ì¤Ä¤«¤é»°¤Ä¤Îʤӡ£ ASCII¤ÎESC(¥¨¥¹¥±¡¼¥×)¥­¥ã¥é¥¯¥¿¤Î¥³¡¼¥É¤Ï `\033'¤Ç¤¢¤ë¡£

\xhh

½½Ï»¿Ê¿ôÃÍhh¤ÎÃÍ¡£ hh¤Ï½½Ï»¿Êʸ»ú(`0'¤«¤é`9' ¤Þ¤Ç¤È¡¢ `A'¤«¤é`F'¤â¤·¤¯¤Ï`a'¤«¤é`f')¡£ ISO C¤ÈƱÍͤˡ¢ºÇ½é¤ÎÈó½½Ï»¿Êʸ»ú¤¬¸«¤Ä¤«¤ë¤Þ¤Ç¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ï Ϣ³¤·¤Æ¤¤¤ë¤â¤Î¤È¤ß¤Ê¤µ¤ì¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢ Æóʸ»ú¤ò±Û¤¨¤ë½½Ï»¿Êʸ»úÎó¤Ï¤É¤Î¤è¤¦¤Ê·ë²Ì¤Ë¤Ê¤ë¤«¤Ï̤ÄêµÁ¤Ç¤¢¤ë (`\x'¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÏPOSIX¤Îawk¤Ç¤Ïµö¤µ¤ì¤Æ¤¤¤Ê¤¤)¡£

\/

ʸ»ú¤È¤·¤Æ¤Î¥¹¥é¥Ã¥·¥å(Àµµ¬É½¸½Äê¿ô¤ËÂФ·¤Æ¤Î¤ßɬÍ×)¡£ ¤³¤ì¤Ï¥¹¥é¥Ã¥·¥å¤òÀµµ¬É½¸½Äê¿ô¤Ë´Þ¤á¤¿¤¤¤È¤­¤Ë»ÈÍѤ¹¤ë¡£ Àµµ¬É½¸½¤¬¥¹¥é¥Ã¥·¥å¤Ç½ªÃ¼¤¹¤ë¤Î¤Ç¡¢ awk¤Ë»Ä¤ê¤ÎÀµµ¬É½¸½¤ò½èÍý¤·Â³¤±¤ë¤Î¤ò»Ø¼¨¤¹¤ë¤Î¤Ë ¥¨¥¹¥±¡¼¥×¤·¤Æ¥¹¥é¥Ã¥·¥å¤ò¥Ñ¥¿¡¼¥ó¤Î°ìÉô¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£

\"

Æó½Å°úÍÑÉ䤽¤Î¤â¤Î(ʸ»úÎóÄê¿ô¤ËÂФ·¤Æ¤Î¤ßɬÍ×)¡£ ¤³¤ì¤ÏÆó½Å°úÍÑÉä¤òʸ»úÎóÄê¿ô¤Ë´Þ¤á¤¿¤¤¤È¤­¤Ë»ÈÍѤ¹¤ë¡£ ʸ»úÎ󤬯ó½Å°úÍÑÉä¤Ç½ªÃ¼¤¹¤ë¤Î¤Ç¡¢Ê¸»úÎó¤Î»Ä¤ê¤ò awk¤Ë½èÍý¤·Â³¤±¤ë¤Î¤ò»Ø¼¨¤¹¤ë¤Î¤Ë¡¢ ¥¨¥¹¥±¡¼¥×¤·¤Æ¥À¥Ö¥ë¥¯¥©¡¼¥È¤òʸ»úÎó¤Î°ìÉô¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£

gawk¤Ç¤Ï¡¢Àµµ¬É½¸½Ãæ¤ÇÆÃÊ̤ʰÕÌ£¤ò»ý¤Ä¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç»Ï¤Þ¤ë Æóʸ»ú¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤¬´ö¤Ä¤«Äɲäµ¤ì¤Æ¤¤¤ë¡£ See section gawk¸ÇÍ­¤ÎÀµµ¬É½¸½±é»»»Ò.

Àµµ¬É½¸½¤Ç¤Ï¡¢gawk¸ÇÍ­¤ÎÀµµ¬É½¸½±é»»»Ò¤Î¥ê¥¹¥È¤Ë¤âÀè¤Î¥ê¥¹¥È¤Ë¤â¤Ê¤¤ ¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤¬Àè¹Ô¤·¤¿¥­¥ã¥é¥¯¥¿¤Ï ¤½¤ì¤¬Ä̾ï¤ÏÀµµ¬É½¸½±é»»»Ò¤Ç¤¢¤ë¤È¤·¤Æ¤â ¥ê¥Æ¥é¥ë¤È¤·¤Æ°·¤ï¤ì¤ë¡£ ¤¿¤È¤¨¤Ð¡¢/a\+b/¤Ï»°¤Ä¤Î¥­¥ã¥é¥¯¥¿¤ÎʤÓ`a+b'¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

´°Á´¤Ê¸ß´¹À­¤òÊݤĤ¿¤á¡¢Àè¤Î¥ê¥¹¥È¤Ë¤Ê¤¤¥­¥ã¥é¥¯¥¿¤ÎÁ°¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò ÃÖ¤«¤Ê¤¤¤³¤È¡£

¤Þ¤È¤á

Advanced Notes: Backslash Before Regular Characters

¤â¤·¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤òÀè¤Î¥ê¥¹¥È¤Ë¤Ï¤Ê¤¤¥­¥ã¥é¥¯¥¿¤ÎÁ°¤ËÃÖ¤¤¤¿¾ì¹ç¡¢ POSIX ¤Îawk¤Ç¤Ï¤½¤Î¾ì¹ç¤Îưºî¤Ï̤ÄêµÁ¤Ç¤¢¤ë¡£ ¤³¤Î¤È¤­Æó¤Ä¤ÎÁªÂò»è¤¬¤¢¤ë¡£

Strip the backslash out
¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò¼è¤ê½ü¤¯¡£

¤³¤ì¤ÏUnix¤Îawk¤Ègawk¤ÎξÊý¤¬¹Ô¤Ã¤Æ¤¤¤ë¡£ ¤¿¤È¤¨¤Ð¡¢"a\qc" ¤Ï "aqc"¤ÈÅù¤·¤¤ (¤³¤ì¤Ï°Â°×¤Ê¥Ð¥°¤ò»ý¤Á¹þ¤ß¤ä¤¹¤¯¡¢´Ö°ã¤¤¤ä¤¹¤¤¤Î¤Çgawk¤Ï ·Ù¹ð¤¹¤ë)¡£ ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤Æ¶õÇò¤Ë°Ï¤Þ¤ì¤¿¿âľ¥Ð¡¼¤ò»È¤ª¤¦¤È¤·¤Æ `FS = "[ \t]+\|[ \t]+"'¤È¤·¤¿¤È¤­¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£ ¤³¤ì¤Ï`FS = "[ \t]+\\|[ \t]+"'¤ÈÆó¤Ä¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò »È¤¦¤Ù¤­¤Ç¤¢¤ë¡£

¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò¤½¤Î¤Þ¤Þ¤Ë¤·¤Æ¤ª¤¯

¤½¤Î¾¤Î°ìÉô¤Îawk¤Î¼ÂÁõ¤Ç¤³¤ì¤¬»È¤ï¤ì¤Æ¤¤¤ë¡£ ¤³¤Î¾ì¹ç¡¢"a\qc"¤Ïa\\qc"¤È¤·¤¿¤È¤­¤ÈƱ¤¸¤Ë¤Ê¤ë¡£

Advanced Notes: ¥á¥¿¥­¥ã¥é¥¯¥¿¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹

Ȭ¿Ê¤ä½½Ï»¿Ê¤Î¥¨¥¹¥±¡¼¥×¤ò»ÈÍѤ·¤ÆÀµµ¬É½¸½¤Î¥á¥¿¥­¥ã¥é¥¯¥¿¤òɽ¤¹¥·¡¼¥±¥ó¥¹¤òµ­½Ò¤·¤¿¤È¤­ (Àµµ¬É½¸½±é»»»Ò)¡¢ awk¤Ï¤½¤Î¤è¤¦¤Ê¥­¥ã¥é¥¯¥¿¤òʸ»ú¤È¤·¤Æ¸«¤ë¤Î¤À¤í¤¦¤«? ¤½¤ì¤È¤âÀµµ¬É½¸½¤Î±é»»»Ò¤È¸«¤ë¤Î¤À¤í¤¦¤«?

¤³¤Î¤è¤¦¤Ê¥­¥ã¥é¥¯¥¿¤ÏÅÁÅýŪ¤Ë¤½¤Îʸ»ú¤½¤Î¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤ë¡£ (d.c.) ¤·¤«¤·¡¢POSIXɸ½à¤Ç¤Ï¤³¤ì¤Ï¥á¥¿¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¤«¤Î¤è¤¦¤Ë°·¤¦¤è¤¦»Ø¼¨¤µ¤ì¤Æ¤ª¤ê¡¢ gawk¤Î¿¶¤ëÉñ¤¤¤â¤½¤¦¤Ê¤Ã¤Æ¤¤¤ë¡£ ¤¿¤À¤·¸ß´¹¥â¡¼¥É (see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¤Ç¤Ï¡¢ gawk¤ÏÀµµ¬É½¸½Äê¿ôÃæ¤ÇȬ¿Ê¤ä½½Ï»¿Ê¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ë¤è¤Ã¤Æ ɽ¸½¤µ¤ì¤¿¥­¥ã¥é¥¯¥¿¤Ïʸ»ú¤½¤Î¤â¤Î¤È¤·¤Æ°·¤ï¤ì¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢/a\52b/¤Ï/a\*b/¤ÈÅù²Á¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.3 Àµµ¬É½¸½±é»»»Ò

°Ê²¼¤Ëµó¤²¤ë¤è¤¦¤ÊÀµµ¬É½¸½±é»»»Ò(regular expression operators) ¤È¤«¥á¥¿¥­¥ã¥é¥¯¥¿(metacharacters) ¤È¸Æ¤Ð¤ì¤ëÀµµ¬É½¸½¤Îµ­½ÒÎϤòÁý²Ã¤µ¤»¤ë¤è¤¦¤Ê¥­¥ã¥é¥¯¥¿¤ò»È¤Ã¤Æ¡¢ Àµµ¬É½¸½¼°¤òÁȤ߹ç¤ï¤»¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ç ÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤ÏÀµµ¬É½¸½¤ÎÃæ¤Ç¤â»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤ì¤é¤ÏÀèÆ¬¤Ë`\'¤¬ÃÖ¤«¤ì¤Æ¤¤¤ë¡£ Àµµ¬É½¸½¤Î½èÍý¤ËÀèΩ¤Ã¤Æ¤³¤Î¤è¤¦¤Ê¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ï²òÀϤµ¤ì¤Æ¡¢ ¤½¤Î¥·¡¼¥±¥ó¥¹¤Îɽ¤¹¥­¥ã¥é¥¯¥¿¤ËÃÖ¤­¤«¤¨¤é¤ì¤ë¡£

°Ê²¼¤Ï¥á¥¿¥­¥ã¥é¥¯¥¿¤Î°ìÍ÷¤Ç¤¢¤ë¡£ ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ç¤Ï¤Ê¤¯¤«¤Ä¤³¤Î°ìÍ÷¤Ë¤Ê¤¤¥­¥ã¥é¥¯¥¿¤Ï¤¹¤Ù¤Æ¡¢ ¤½¤ì¼«¿È¤òɽ¤¹¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¡£

\

¤³¤ì¤Ï¥Þ¥Ã¥Á¥ó¥°¤Î¤È¤­¤Ë¤¢¤ë¥­¥ã¥é¥¯¥¿¤ÎÆÃ¼ì¤Ê°ÕÌ£¤òÍÞÀ©¤¹¤ë¤¿¤á¤Ë»ÈÍѤ¹¤ë¡£ Î㤨¤Ð¡¢`\$'¤Ï`$'¤È¤¤¤¦¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

^

¤³¤ì¤Ïʸ»úÎó¤ÎÀèÆ¬¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£Î㤨¤Ð¡¢`^@chapter' ¤Ïʸ»úÎó¤ÎÀèÆ¬¤Ë¤¢¤ë`@chapter'¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤³¤ì¤Ï Texinfo¥Õ¥¡¥¤¥ë¤Ç¾Ï¤ÎÀèÆ¬¤ò¸«¤Ä¤±¤ë¤Î¤Ë»ÈÍѤǤ­¤ë¡£ `^'¤Ïʸ»úÎó¤ÎÀèÆ¬Éôʬ¤Ë¤Î¤ß¥Þ¥Ã¥Á¤µ¤»¤ë¤Î¤Ë»È¤¦Ìܰõ¤Ç¤¢¤ë¤Î¤Ç¡¢ ¥¢¥ó¥«¡¼(anchor)¤È¤·¤ÆÃΤé¤ì¤Æ¤¤¤ë¡£

`^'¤Ï ʸ»úÎóÃæ¤Ë¤¢¤ë¹Ô(line embedded in a string)¤ÎÀèÆ¬¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¤³¤È¤ËÃí°Õ¡£ ¼¡¤ÎÎã¤Î¾ò·ï¼°¤Ï¿¿¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£

 
if ("line1\nLINE 2" ~ /^L/) …
  
$

¤³¤ì¤Ï`^'¤Ë»÷¤Æ¤¤¤ë¤¬¡¢Ê¸»úÎó¤ÎºÇ¸å¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£Î㤨¤Ð¡¢ `p$' ¤Ï`p'¤Ç½ª¤ï¤ë¥ì¥³¡¼¥É¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ `$'¤â¥¢¥ó¥«¡¼¤Ç¤¢¤ê¡¢Ê¸»úÎóÃæ¤Î¹ÔËö¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£Î㤨¤Ð¡¢

 
if ("line1\nLINE 2" ~ /1$/) …
  

¤³¤Î¾ò·ï¼°¤Ï¿¿¤Ë¤Ï¤Ê¤é¤Ê¤¤¡£

.

¥Ô¥ê¥ª¥É¡¢¤¢¤ë¤¤¤Ï¥É¥Ã¥È¤Ï²þ¹Ô¤ò´Þ¤àǤ°Õ¤Î¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ Î㤨¤Ð¡¢`.P' ¤Ï`P'¤¬¸å¤Ë³¤¯Ç¤°Õ¤Î°ìʸ»ú¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ Ï¢Àܤò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢`U.A'¤Î¤è¤¦¤Ê `U'¤Ç»Ï¤Þ¤ê`A'¤Ç½ª¤ï¤ëǤ°Õ¤Î»°Ê¸»ú¤ÎʤӤ˥ޥåÁ¤¹¤ë¤è¤¦¤Ê Àµµ¬É½¸½¤òºî¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¸·Ì©¤ÊPOSIX¥â¡¼¥É(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¤Ç¤Ï¡¢ `.'¤Ï¤¹¤Ù¤Æ¤Î¥Ó¥Ã¥È¤¬0¤Ç¤¢¤ë¥­¥ã¥é¥¯¥¿¡¢NUL¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢NUL¤Ïñ¤Ë¤â¤¦°ì¤Ä¤Î¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¡£ ¾¤Î¥Ð¡¼¥¸¥ç¥ó¤Îawk¤Ç¤Ï¡¢ NUL¥­¥ã¥é¥¯¥¿¤Ë¤Ï¥Þ¥Ã¥Á¤µ¤»¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£

[…]

¤³¤ì¤Ï¥­¥ã¥é¥¯¥¿¥ê¥¹¥È(character list)¤È¸Æ¤Ð¤ì¤ë¤â¤Î¤Ç¤¢¤ë (13)¡£ ¤³¤ì¤Ï¥Ö¥é¥±¥Ã¥È¤Ë°Ï¤Þ¤ì¤Æ¤¤¤ë¥­¥ã¥é¥¯¥¿¤Î¤¤¤º¤ì¤«°ì¤Ä¤È¥Þ¥Ã¥Á¤¹¤ë¡£ Î㤨¤Ð¡¢`[MVX]' ¤Ïʸ»úÎóÃæ¤Ë¤¢¤ë`M', `V', `X'¤Î¤¤¤º¤ì¤«¤Î ¥­¥ã¥é¥¯¥¿¤È¥Þ¥Ã¥Á¤¹¤ë¡£ ¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤Î»ÈÍѤ˥֥饱¥Ã¥È¤ÎÆâ¦¤Ç»È¤¦¤³¤È¤Î¤Ç¤­¤ë¤â¤Î¤Î ¾ÜºÙ¤ÊÀâÌÀ¤¬¤¢¤ë¡£

[^ …]

¤³¤ì¤Ï¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤ÎÊ佸¹ç(complmented character list)¤Ç¤¢¤ë¡£ `['¤Îľ¸å¤Î¥­¥ã¥é¥¯¥¿¤Ï `^'¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¤³¤ì¤Ï¥Ö¥é¥±¥Ã¥È¤ÎÃæ¤Ë¤¢¤ë¥­¥ã¥é¥¯¥¿°Ê³°¤ÎǤ°Õ¤Î¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤¿¤È¤¨¤Ð`[^awk]'¤Ï`a'¡¢`w'¡¢`k'°Ê³°¤Î¥­¥ã¥é¥¯¥¿¤Ë ¥Þ¥Ã¥Á¤¹¤ë¡£

|

¤³¤ì¤ÏÁªÂò±é»»»Ò(alternation operator)¤Ç¤¢¤ê¡¢ÁªÂò¤ò¹Ô¤¦¤Î¤Ë»ÈÍѤ¹¤ë¡£ `|'¤ÏÀµµ¬É½¸½±é»»»Ò¤ÎÃæ¤ÇºÇ¤âÄ㤤ͥÀè½ç°Ì¤ò»ý¤Ä¡£ ¤¿¤È¤¨¤Ð¡¢`^P|[[:digit:]]'¤Ï`^P'¤«`[[:digit:]]'¤Î ¤¤¤º¤ì¤«¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£¤Ä¤Þ¤ê¡¢`P'¤Ç»Ï¤Þ¤ë¤â¤Î¤« ¿ô»ú¤ò´Þ¤à¤â¤Î¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

ÁªÂò¤Ï¤½¤ÎξÊդβÄǽ¤Ê¸Â¤êÂ礭¤ÊÉôʬ¼°¤ËÂФ·¤ÆÅ¬ÍѤµ¤ì¤ë¡£

(…)

¥«¥Ã¥³¤ÏÀµµ¬É½¸½¤ò(»»½Ñ¼°¤Î¤È¤­¤ÈƱ¤¸ÍͤË)¥°¥ë¡¼¥×¤È¤¹¤ë°Ù¤Ë»ÈÍѤµ¤ì¤ë¡£ ¤³¤ì¤ÏÁªÂò±é»»»Ò`|'¤ò´Þ¤ó¤ÀÀµµ¬É½¸½¤òÏ¢·ë¤¹¤ë°Ù¤Ë»È¤¦»ö¤¬¤Ç¤­¤ë¡£ ¤¿¤È¤¨¤Ð¡¢`@(samp|code)\{[^}]+\}'¤Ï `@code{foo}'¤Ë¤â`@samp{bar}'¤Ë¤â¥Þ¥Ã¥Á¤¹¤ë (¤³¤ì¤ÏTexinfo¤Î¥Õ¥©¡¼¥Þ¥Ã¥ÈÀ©¸æ¥·¡¼¥±¥ó¥¹¤Ç¤¢¤ë¡£`+'¤Ï ¸å½Ò¤¹¤ë)¡£

*

¤³¤Î¥·¥ó¥Ü¥ë¤Ï¤½¤ÎÁ°¤ËÃÖ¤«¤ì¤Æ¤¤¤ëÀµµ¬É½¸½¤ÎɬÍפʸ¤ê¤Î¤¯¤êÊÖ¤·¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ Î㤨¤Ð `ph*'¤Ç¤Ï`*'¤Ï¤½¤ÎÁ°¤Ë¤¢¤ë`h'¤ËŬÍѤµ¤ì¡¢ °ìʸ»ú¤Î`p'¤Ë³¤¤¤ÆÇ¤°Õ¤Î¿ô¤Î`h'¤¬¤¢¤ëʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤³¤ì¤Ï`p'¤À¤±¤Ç`h'¤¬°ì¸Ä¤â¤Ê¤¤¤è¤¦¤Ê¥Ñ¥¿¡¼¥ó¤Ë¤â¥Þ¥Ã¥Á¤¹¤ë¡£

`*'¤Î¤¯¤êÊÖ¤·¤Ï²Äǽ¤Ê¤«¤®¤êºÇ¤â¾®¤µ¤Ê¼°¤¬ºÎÍѤµ¤ì¤ë (¤â¤·¤è¤êÂ礭¤Ê¼°¤ò·«¤êÊÖ¤·¤¿¤¤¤Î¤Ê¤é¤Ð³ç¸Ì¤ò»È¤¨¤Ð¤è¤¤) ¡£ ¤½¤·¤Æ¤½¤Î¼°¤Ï²Äǽ¤Ê¸Â¤êÂ礭¤Ê¤¯¤êÊÖ¤·¤ò¸«¤Ä¤±¤À¤¹¡£Î㤨¤Ð¡¢ `awk '/\(c[ad][ad]*r x\)/ { print }' sample' ¤Ï `sample'Ãæ¤Î¥ì¥³¡¼¥É¤Î¤¦¤Á¡¢ `(car x)', `(cdr x)', `(cadr x)' ¤Î¤è¤¦¤Êʸ»úÎó¤ò´Þ¤à¤â¤Î¤òÁ´¤Æ½ÐÎϤ¹¤ë¡£ ¥«¥Ã¥³¤ÎÁ°¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò¤Ä¤±¤Æ¥¨¥¹¥±¡¼¥×¤·¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¡£

+

¤³¤Î¥·¥ó¥Ü¥ë¤Ï`*'¤È»÷¤Æ¤¤¤ë¤¬¡¢ Àè¹Ô¤¹¤ëÉôʬÀµµ¬É½¸½¤¬¾¯¤Ê¤¯¤È¤â°ì²ó¥Þ¥Ã¥Á¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¤Ä¤Þ¤ê¡¢ `wh+y' ¤Ç¤¤¤¦¤È¡¢`wh*y'¤Ç¤Ï¤¹¤Ù¤Æ¥Þ¥Ã¥Á¤·¤Æ¤¤¤¿ `why' ¤ä `whhy'¡¢`wy'¤Î¤¦¤Á¡¢Á°¼ÔÆó¼Ô¤Ë¤Ï¥Þ¥Ã¥Á¤¹¤ë¤¬¡¢ ºÇ¸å¤Î¤â¤Î¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¼¡¤ÎÎã¤Ï¡¢`*'¤ÇºÇ¸å¤Ëµó¤²¤¿Îã¤ò½ñ¤­Ä¾¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£

 
awk '/\(c[ad]+r x\)/ { print }' sample
  
?

¤³¤Î¥·¥ó¥Ü¥ë¤Ï`*'¤È»÷¤Æ¤¤¤ë¤¬¡¢Àè¹Ô¤¹¤ëÉôʬÀµµ¬É½¸½¤¬¤Ê¤¤¤«¡¢ °ì²ó¤À¤±¤Î¤È¤­¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£Î㤨¤Ð `fe?d' ¤Ï `fed'¤ä`fd'¤Ë¥Þ¥Ã¥Á¤¹¤ë¤¬¡¢¤½¤ì°Ê³°¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£

{n}
{n,}
{n,m}

interval expresion¤Î¥Ö¥ì¡¼¥¹¤ÎÆâ¦¤Ë¤Ï¡¢°ì¤Ä¤«Æó¤Ä¤Î¿ôÃͤ¬¤¢¤ë¡£ ¤â¤·¥Ö¥ì¡¼¥¹¤ÎÃæ¤Ë¿ôÃͤ¬°ì¤Ä¤À¤±¤Ê¤é¤Ð¡¢Ä¾Á°¤ÎÀµµ¬É½¸½¤¬n²ó·«¤êÊÖ¤µ¤ì¤ë¡£ ¤â¤·¥«¥ó¥Þ¤Ë¶èÀÚ¤é¤ì ¤Æ¿ôÃͤ¬Æó¤Ä¤¢¤ì¤Ð¡¢Ä¾Á°¤ÎÀµµ¬É½¸½¤¬ n²ó¤«¤ém²ó·«¤êÊÖ¤µ¤ì¤ë¡£¥«¥ó¥Þ¤Î¸å¤í¤Ë¿ôÃͤ¬°ì¤Ä¤À¤±¤Ê¤é¤Ð¡¢ ľÁ°¤ÎÀµµ¬É½¸½¤¬¾¯¤Ê¤¯¤È¤ân²ó·«¤êÊÖ¤µ¤ì¤ë¡£

wh{3}y

¤³¤ì¤Ï`whhhy' ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤¬¡¢ `why' ¤ä `whhhhy'¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£

wh{3,5}y

¤³¤ì¤Ï `whhhy' ¤« `whhhhy' ¤« `whhhhhy'¤Î¤¤¤º¤ì¤«¤Î¤ß¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

wh{2,}y

`whhy' ¤ä `whhhy'¤Ê¤É¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

POSIXɸ½à¤Î°ìÉô¤È¤·¤Æ¡¢ awk¤Èegrep¤È¤Û¤«¤Î¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤È¤Î°ì´ÓÀ­¤Î¤¿¤á¤³¤ì¤¬Äɲ䵤줿¡£

¤·¤«¤·¤Ê¤¬¤é¡¢¸Å¤¤¥×¥í¥°¥é¥à¤Ç¤Ï`{'¤ä`}'¤òÀµµ¬É½¸½Äê¿ô¤ÎÃæ¤Ç »È¤Ã¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¤Î¤Ç¡¢ gawk¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÀµµ¬É½¸½Ãæ¤Î interval expressions¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£ `--posix'¥ª¥×¥·¥ç¥ó¤« `--re-interval'¥ª¥×¥·¥ç¥ó (see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó) ¤¬»ØÄꤵ¤ì¤ë¤È¡¢ interval expressions¤òÀµµ¬É½¸½¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë¡£

Àµµ¬É½¸½Äê¿ô¤Ç`{'¤ä`}'¤ò»È¤Ã¤¿¿·¤·¤¤¥×¥í¥°¥é¥à¤Ç¤Ï¡¢ ¤½¤ì¤é¤ò¾ï¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ç¥¨¥¹¥±¡¼¥×¤¹¤ë¤ÈÎɤ¤¤À¤í¤¦¡£ ¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤ê¤½¤ÎÀµµ¬É½¸½Äê¿ô¤Ï ¤É¤Î¥Ð¡¼¥¸¥ç¥ó¤Îawk¤ò»È¤Ã¤Æ¤â ¤¢¤Ê¤¿¤Î˾¤ó¤À¤È¤ª¤ê¤Ëư¤¯¤è¤¦¤Ë¤Ê¤ë¡£ (14)

Àµµ¬É½¸½¤Ç¤Ï¡¢`*', `+', `?'¤È¤¤¤Ã¤¿±é»»»Ò¤Ï `{' ¤ä `}'¤ÈƱ¤¸Í¥Àè½ç°Ì¤ò»ý¤Á¡¢ºÇ¤â¹â¤¤¡£ ³¤¤¤ÆÏ¢Àܤ¬¤¢¤ê¡¢ºÇ¸å¤Ë`|'¤¬¤¢¤ë¡£ »»½Ñ¼°¤ÈƱ¤¸¤è¤¦¤Ë¡¢¥«¥Ã¥³¤Ï¤½¤ì¤Ç³ç¤Ã¤¿±é»»»Ò¤ÎÍ¥Àè½ç°Ì¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

POSIX¤Îawk¤Ègawk¤Ç¤Ï¡¢`*'¡¢`+'¡¢`?' ¤È¤¤¤Ã¤¿±é»»»Ò¤Ï¤½¤ì¤ËÀè¹Ô¤¹¤ëÀµµ¬É½¸½¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¤½¤ì¼«¿È¤òɽ¤¹¡£ ¤¿¤È¤¨¤Ð`/+/'¤Ï¥ê¥Æ¥é¥ë¤Î`+'¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢Â¾¤Î¿¤¯¤Îawk½èÍý·Ï¤Ç¤Ï¤³¤ì¤Ï¹½Ê¸¥¨¥é¡¼¤È¤ß¤Ê¤µ¤ì¤ë¡£

gawk¤¬¸ß´¹¥â¡¼¥É(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¤Çưºî¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢ POSIX¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤Èinterval¼°¤ÏÀµµ¬É½¸½Ãæ¤Ç»È¤¦¤³¤È¤¬¤Ç¤­¤Ê¤¯¤Ê¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.4 ¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤Î»ÈÍÑ

¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤ÎÃæ¤Ç¤Ï¡¢Èϰϼ°(range expression)¤Ï¥Ï¥¤¥Õ¥ó¤Ç¶èÀÚ¤é¤ì¤¿ Æó¤Ä¤Î¥­¥ã¥é¥¯¥¿¤«¤é¤Ê¤ë¡£¤³¤ì¤Ï ¸½ºß¤Î¥í¥«¡¼¥ë¤Î¾È¹ç¥·¡¼¥±¥ó¥¹¤È¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤ò»È¤Ã¤Æ¡¢ Æó¤Ä¤Î¥­¥ã¥é¥¯¥¿¤Î´Ö¤Ë¸ºß¤¹¤ëǤ°Õ¤Î1¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¥Ç¥Õ¥©¥ë¥È¤ÎC ¥í¥«¡¼¥ë¤Ç¤Ï¡¢`[a-dx-z]' ¤Ï `[abcdxyz]' ¤ÈÅù²Á¤Ç¤¢¤ë¡£Â¿¤¯¤Î¥í¥«¡¼¥ë¤Ï¥­¥ã¥é¥¯¥¿¤ò¼­½ñ½ç¤Ë¥½¡¼¥È¤·¤Æ¤¤¤ë¤Î¤Ç¡¢ ¤½¤¦¤¤¤Ã¤¿¥í¥«¡¼¥ë¤Ç¤Ï`[a-dx-z]' ¤Ï `[abcdxyz]'¤ÈÅù²Á¤Ç¤Ï¤Ê¤¯¤Ê¤ë¡£ ¤½¤ÎÂå¤ï¤ê¤Ë¤¿¤È¤¨¤Ð `[aBbCcDdxXyYz]' ¤ÈÅù²Á¤Ë¤Ê¤ë¡£ÅÁÅýŪ¤Ê ¥Ö¥é¥±¥Ã¥È¼°¤Î²ò¼á¤òÆÀ¤ë¤¿¤á¤Ë¡¢´Ä¶­ÊÑ¿ô LC_ALL¤ËÃÍ `C'¤òÀßÄꤹ¤ë ¤³¤È¤Ë¤è¤Ã¤ÆC ¥í¥«¡¼¥ë¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£

`\', `]', `-', `^' ¤È¤¤¤Ã¤¿¥­¥ã¥é¥¯¥¿¤ò¥­¥ã¥é¥¯¥¿¥ê¥¹¥È Ãæ¤ËÃÖ¤¯¤Ë¤Ï¡¢¤½¤ÎÁ°¤Ë`\'¤òÃÖ¤¯¡£Îã¤òµó¤²¤è¤¦:

 
[d\]]
  

¤³¤ì¤Ï `d' ¤« `]'¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

¥­¥ã¥é¥¯¥¿¥ê¥¹¥ÈÃæ¤Î `\' ¤Î°·¤¤¤Ï¾¤Î awk ¤Î¼ÂÁõ¤ä POSIX ¤ÎÍ×µá¤Ë½¾¤Ã¤¿¤â¤Î¤Ç¤¢¤ë¡£awk ¤ÎÀµµ¬É½¸½¤Ï POSIX ¤ÎÄêµÁ¤¹¤ë³ÈÄ¥Àµµ¬É½¸½(Extended Regular Expressions¡¢ EREs)¤Î ¥¹¡¼¥Ñ¡¼¥»¥Ã¥È¤Ç¤¢¤ë¡£POSIX ¤Î³ÈÄ¥Àµµ¬É½¸½¤ÏÅÁÅýŪ¤Ê egrep ¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤¬¼õ¤±ÉÕ¤±¤ëÀµµ¬É½¸½¤Ë´ð¤Å¤¤¤Æ¤¤¤ë¡£

¥­¥ã¥é¥¯¥¿¥¯¥é¥¹ ¤Ï POSIX ɸ½à¤Ë¤è¤Ã¤ÆÆ³Æþ¤µ¤ì¤¿¿·¤·¤¤µ¡Ç½¤Ç¤¢¤ë¡£ ¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤ÏÆÃÊ̤ʰÀ­¤ò»ý¤Ä¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤òɽ¤¹ÆÃ¼ì¤Êµ­Ë¡¤Ç¤¢¤ë¤¬¡¢ ¼ÂºÝ¤Î¥­¥ã¥é¥¯¥¿¤Ï¹ñ¤´¤È¡¢¤Þ¤¿¤Ï¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤´¤È¤Ë°Û¤Ê¤ë¤â¤Î¤È¤Ê¤ë ²ÄǽÀ­¤¬¤¢¤ë¡£¤¿¤È¤¨¤Ð¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ÏÊÆ¹ñ¤È¥Õ¥é¥ó¥¹¤Ç¤Ï°Û¤Ê¤ë¤â¤Î¤Ç¤¢¤ë¡£

¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤Ï¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤Î¥Ö¥é¥±¥Ã¥È¤ÎÆâ¦¤Ç¤Î¤ßÀµÅö¤Ç¤¢¤ë¡£ ¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤Ï`[:'¡¢¥¯¥é¥¹¤òɽ¤¹¥­¡¼¥ï¡¼¥É¡¢`:]'¤«¤é ¹½À®¤µ¤ì¤ë¡£table-char-classes¤Ï POSIX ɸ½à¤ÇÄêµÁ¤µ¤ì¤ë¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤Î¥ê¥¹¥È¤Ç¤¢¤ë¡£

Class

Meaning

[:alnum:]

¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Þ¤¿¤Ï¿ô»ú¡£

[:alpha:]

¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¡£

[:blank:]

¥¹¥Ú¡¼¥¹¤Þ¤¿¤Ï¥¿¥Ö¡£

[:cntrl:]

À©¸æÊ¸»ú¡£

[:digit:]

¿ô»ú¡£

[:graph:]

°õ»ú²Äǽ¤«¤Ä²Ä»ë¤Î¥­¥ã¥é¥¯¥¿¡£ (¥¹¥Ú¡¼¥¹¤Ï°õ»ú²Äǽ¤Ç¤¢¤ë¤¬²Ä»ë¤Ç¤Ï¤Ê¤¤¡£`a' ¤Ï°õ»ú²Äǽ¤«¤Ä²Ä»ë¤Ç¤¢¤ë)

[:lower:]

¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¾®Ê¸»ú¡£

[:print:]

°õ»ú²Äǽ¤Ê¥­¥ã¥é¥¯¥¿ (À©¸æÊ¸»ú¤Ç¤Ê¤¤¥­¥ã¥é¥¯¥¿)¡£

[:punct:]

Punctuation characters (ʸ»ú¡¢¿ô»ú¡¢À©¸æÊ¸»ú¡¢¥¹¥Ú¡¼¥¹¤Ç¤Ê¤¤¥­¥ã¥é¥¯¥¿)¡£

[:space:]

¶õÇò (¥¹¥Ú¡¼¥¹¡¢¥¿¥Ö¡¢²þ¥Ú¡¼¥¸)¡£

[:upper:]

¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤ÎÂçʸ»ú¡£

[:xdigit:]

½½Ï»¿Ê¤Î¿ô»ú¡£

Table 2.1: POSIX Character Classes

¤¿¤È¤¨¤Ð¡¢POSIX ɸ½à°ÊÁ°¤Ï¡¢¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤È¿ô»ú¤Ë¥Þ¥Ã¥Á¤µ¤»¤ë¤Î¤Ë /[A-Za-z0-9]/¤Èµ­½Ò¤¹¤ëɬÍפ¬¤¢¤Ã¤¿¡£¤â¤·Ê̤Υ¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤¬ ¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï¤½¤ì¤Ï¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿¤·¡¢ASCII ¤Ç¤Ï¤Ê¤¤¥­¥ã¥é¥¯¥¿¥»¥Ã¥È ¤ò¾È¹ç¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï ASCII ¤Î alphanumeric ¤Ê¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤·¤Ê¤«¤Ã¤¿ ¤«¤â¤·¤ì¤Ê¤¤¡£POSIX ¤Î¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¡¢ »ÈÍѤ·¤Æ¤¤¤ë¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤Ë¤ª¤±¤ë¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤È¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë ¤â¤Î¤È¤·¤Æ /[[:alnum:]]/¤Èµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¤µ¤é¤Ë¥­¥ã¥é¥¯¥¿¥ê¥¹¥ÈÃæ¤Ë¸½¤ì¤ëÆó¤Ä¤ÎÆÃ¼ì¤Ê¥·¡¼¥±¥ó¥¹¤¬¤¢¤ë¡£ ¤³¤ì¤é¤ÏÈóASCII¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤ËŬÍѤµ¤ì¡¢Æóʸ»ú°Ê¾å¤Çɽ¤µ¤ì¤ë ñ°ì¤Î¥·¥ó¥Ü¥ë(¾È¹çÍ×ÁÇ collating elements)¤ò»ý¤Ä¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ì¤é¤Ï¤Þ¤¿¾È¹ç¤äʤÓÂØ¤¨¤Î¤¿¤á¤ÎÅù²Á¤Ê¥­¥ã¥é¥¯¥¿¤ò»ý¤Ä (¤¿¤È¤¨¤Ð¥Õ¥é¥ó¥¹¸ì¤Ç¤Ï¡¢À¸¤Î ``e'' ¤È grave-accent ¤Î¤Ä¤¤¤¿ ``è'' ¤Ï Åù²Á¤Ç¤¢¤ë)¡£ ¤³¤ì¤é¤Î¥·¡¼¥±¥ó¥¹¤Ï°Ê²¼¤Î¤È¤ª¤ê:

¾È¹çÍ×ÁÇ(Collating symbols)

[ch] is a regexp that matches either `c' or `h'. Ê£¿ô¥­¥ã¥é¥¯¥¿¤Î¾È¹çÍ×ÁǤÏ`[.' ¤È `.]' ¤Ë°Ï¤Þ¤ì¤ë¡£ ¤¿¤È¤¨¤Ð`ch' ¤¬¾È¹çÍ×ÁǤǤ¢¤Ã¤¿¾ì¹ç¡¢[[.ch.]] ¤Ï ¤³¤Î¾È¹çÍ×ÁǤ˥ޥåÁ¤¹¤ëÀµµ¬É½¸½¤Ç¤¢¤ë¤Î¤ËÂФ·¤Æ [ch] ¤Ï`c'¤â¤·¤¯¤Ï`h'¤Ë¥Þ¥Ã¥Á¤¹¤ëÀµµ¬É½¸½¤Ç¤¢¤ë¡£

Åù²Á¥¯¥é¥¹(Equivalence classes)

¥­¥ã¥é¥¯¥¿¤ÎÅù²Á¤Ê¤â¤Î¤Î¥ê¥¹¥È¤Î¤¿¤á¤Î¥í¥«¡¼¥ë¸ÇÍ­¤Î̾Á°¤Ç¤¢¤ë¡£¤³¤Î̾Á°¤Ï `[=' ¤È `=]' ¤Ç°Ï¤Þ¤ì¤ë¡£¤¿¤È¤¨¤Ð¡¢`e' ¤È¤¤¤¦Ì¾Á°¤Ï ``e''¡¢ ``è'' ¡¢``é'' ¤Î¤¹¤Ù¤Æ¤òɽ¤¹¤Î¤Ë»È¤ï¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ¤³¤Î¾ì¹ç¡¢[[=e=]] ¤Ï`e', `é', `è' ¤Î¤¤¤º¤ì¤«¤Ë¥Þ¥Ã¥Á¤¹¤ë Àµµ¬É½¸½¤Ç¤¢¤ë¡£

¤³¤ì¤é¤Îµ¡Ç½¤ÏÈó±Ñ¸ì·÷¤Î¥í¥«¡¼¥ë¤Ë¤ª¤¤¤ÆÈó¾ï¤ËÊØÍø¤Ç¤¢¤ë¡£

·Ù¹ð: gawk¤¬»È¤Ã¤Æ¤¤¤ëÀµµ¬É½¸½¥Þ¥Ã¥Á¥ó¥°¤Î¤¿¤á¤Î¥é¥¤¥Ö¥é¥ê´Ø¿ô¤Ï ¸½ºß¤Î¤È¤³¤íPOSIX¤Î¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤Î¤ß¤òǧ¼±¤·¡¢¾È¹çÍ×ÁǤäÅù²Á¥¯¥é¥¹¤Ïǧ¼±¤·¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.5 gawk¸ÇÍ­¤ÎÀµµ¬É½¸½±é»»»Ò

Àµµ¬É½¸½¤ò°·¤¦ GNU ¥½¥Õ¥È¥¦¥§¥¢¤Ï¿¤¯¤ÎÀµµ¬É½¸½±é»»»Ò¤òÄɲ䷤Ƥ¤¤ë¡£ ¤³¤ì¤é¤Î±é»»»Ò¤Ï¤³¤Î¥»¥¯¥·¥ç¥ó¤ÇÀâÌÀ¤µ¤ì¡¢gawk¤Ë ¸ÇÍ­¤Î¤â¤Î¤Ç¤¢¤ë¡£¤³¤ì¤é¤Î±é»»»Ò¤Ï¾¤Î awk ½èÍý·Ï¤Ç¤Ï »È¤¦¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£Äɲ䵤줿±é»»»Ò¤Î¤Û¤È¤ó¤É¤Ïñ¸ì¥Þ¥Ã¥Á¥ó¥°¤ò °·¤¦¤â¤Î¤Ç¤¢¤ë¡£¤³¤³¤Ç¡¢Ã±¸ì¤È¤Ï¡¢°ì¤Ä°Ê¾å¤Îʸ»ú¡¢¿ô»ú¡¢ ¥¢¥ó¥À¡¼¥¹¥³¥¢(`_')¤ÎʤӤǤ¢¤ë:

\w

Ǥ°Õ¤Îñ¸ì¤ò¹½À®¤¹¤ë¥­¥ã¥é¥¯¥¿ --- ¤Ä¤Þ¤ê¡¢Ç¤°Õ¤Îʸ»ú¡¢ ¿ô»ú¡¢¥¢¥ó¥À¡¼¥¹¥³¥¢¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£[[:alnum:]_]¤Î û½Ìµ­Ë¡¤È¹Í¤¨¤ë¤È¤è¤¤¡£

\W

ñ¸ì¤ò¹½À®¤·¤Ê¤¤Ç¤°Õ¤Î¥­¥ã¥é¥¯¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ [^[:alnum:]_]¤Îû½Ìµ­Ë¡¡£

\<

ñ¸ì¤ÎÀèÆ¬¤Ë¤¢¤ë¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£¤¿¤È¤¨¤Ð¡¢/\<away/ ¤Ï `away' ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤¬ `stowaway'¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£

\>

ñ¸ì¤Î½ªÃ¼¤Ë¤¢¤ë¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ ¤¿¤È¤¨¤Ð¡¢/stow\>/ ¤Ï `stow' ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤¬ `stowaway' ¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£

\y

ñ¸ì¤ÎÀèÆ¬¤â¤·¤¯¤Ï½ªÃ¼¤Ë¤¢¤ë¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£¤¿¤È¤¨¤Ð¡¢ `\yballs?\y' ¤Ï ÆÈΩ¤·¤¿Ã±¸ì¤Î `ball' ¤â¤·¤¯¤Ï `balls' ¤Ë ¥Þ¥Ã¥Á¤¹¤ë¡£

\B

ñ¸ì¤ò¹½À®¤¹¤ë¥­¥ã¥é¥¯¥¿Æó¤Ä¤Î´Ö¤Î¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£ /\Brat\B/ ¤Ï `crate' ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤¬ `dirty rat' ¤Ë¤Ï ¥Þ¥Ã¥Á¤·¤Ê¤¤¡£`\B' ¤Ï `\y' ¤ÎÈ¿ÂФǤ¢¤ë¡£

¥Ð¥Ã¥Õ¥¡¾å¤ÇƯ¤¯Æó¤Ä¤Î±é»»»Ò¤¬¤¢¤ë¡£Emacs ¤Ç¤Ï¡¢¥Ð¥Ã¥Õ¥¡¤Ï Emacs ¤Î¥Ð¥Ã¥Õ¥¡¤Ç¤¢¤ë¡£gawk ¤ÎÀµµ¬É½¸½¥é¥¤¥Ö¥é¥ê¥ë¡¼¥Á¥ó¤Ï ¥Ð¥Ã¥Õ¥¡¤È¤·¤ÆÊ¸»úÎóÁ´ÂΤò°·¤¦¡£Æó¤Ä¤Î±é»»»Ò¤Ï¼¡¤ÎÄ̤ê:

\`

¥Ð¥Ã¥Õ¥¡(ʸ»úÎó)¤ÎÀèÆ¬¤Ë¤¢¤ë¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

\'

¥Ð¥Ã¥Õ¥¡(ʸ»úÎó)¤Î½ªÃ¼¤Ë¤¢¤ë¶õʸ»úÎó¤Ë¥Þ¥Ã¥Á¤¹¤ë¡£

`^' ¤ä `$' ¤Ï¾ï¤Ëʸ»úÎó¤ÎÀèÆ¬¤ä½ªÃ¼¤ËÂФ·¤ÆÆ¯¤¯¤Î¤Ç¡¢ ¤³¤ì¤é¤Î±é»»»Ò¤Ï²¿¤Îµ¡Ç½¤âawk¤ËÄɲ䷤ʤ¤¡£¤³¤ì¤é¤Ï ¾¤Î GNU ¥½¥Õ¥È¥¦¥§¥¢¤È¤Î¸ß´¹¤Î¤¿¤á¤ËÄ󶡤µ¤ì¤Æ¤¤¤ë¡£

¾¤Î GNU ¥½¥Õ¥È¥¦¥§¥¢¤Ç¤Ï¡¢Ã±¸ì¶­³¦¤Î±é»»»Ò¤Ï `\b' ¤Ç¤¢¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¤³¤ì¤Ï¥Ð¥Ã¥¯¥¹¥Ú¡¼¥¹¥È¤·¤ÆÄêµÁ¤µ¤ì¤Æ¤¤¤ë awk ¸À¸ì¤È ¾×ÆÍ¤¹¤ë¡£¤³¤Î¤¿¤á¡¢gawk ¤ÏÊ̤Îʸ»ú¤ò»È¤Ã¤Æ¤¤¤ë¡£ Ê̤ÎÁªÂò»è¤È¤·¤Æ¤Ï¡¢GNU ¤Î±é»»»Ò¤Ë¤ÏÆó¤Ä¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤òÍ׵᤹¤ë¤È¤¤¤¦ ¤ä¤êÊý¤â¤¢¤Ã¤¿¤¬¡¢¤³¤ì¤Ïº®Íð¤ò¾·¤¯¡£¸½ºß¤Î¡¢GNU ¤Î `\b'¤ò `\y' ¤ÇÂåÂØ¤¹¤ë¤Î¤Ï¤ä¤ä¤Þ¤·¤ÊÊýË¡¤Ç¤¢¤ë¡£

control how gawk interprets characters in regexps: gawk ¤Ç¤ÎÀµµ¬É½¸½Ãæ¤Î¥­¥ã¥é¥¯¥¿¤Î²ò¼á¤òÀ©¸æ¤¹¤ë´ö¤Ä¤«¤Î ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤¬¤¢¤ë(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó):

¥ª¥×¥·¥ç¥ó¤Ê¤·

¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢POSIX ¤ÎÀµµ¬É½¸½¤È Àè¤ËÀâÌÀ¤·¤¿ GNU ¤ÎÀµµ¬É½¸½±é»»»Ò Àµµ¬É½¸½±é»»»Ò¤ÇÀâÌÀ¤·¤¿ GNU ¤ÎÀµµ¬É½¸½±é»»»Ò ¤¬»È¤¨¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢interval expressions ¤Ï¥µ¥Ý¡¼¥È¤µ¤ì¤Ê¤¤¡£

--posix

POSIX ¤ÎÀµµ¬É½¸½¤À¤±¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤ë¡£GNU ¤Î±é»»»Ò¤ÏÆÃÊ̤ʰÕÌ£¤ò »ý¤¿¤Ê¤¤(¤¿¤È¤¨¤Ð¡¢`\w' ¤¬¥ê¥Æ¥é¥ë¤Î `w'¤Ë¥Þ¥Ã¥Á¤¹¤ë)¡£ Interval expression ¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£

--traditional

ÅÁÅýŪ¤Ê Unix ¤Î awk ¤ÎÀµµ¬É½¸½¤¬»È¤¨¤ë¡£ GNU ¤Î±é»»»Ò¤ÏÆÃÊ̤ʰÕÌ£¤ò»ý¤¿¤º¡¢interval expressions ¤ä POSIX ¤Î¥­¥ã¥é¥¯¥¿¥¯¥é¥¹ ([[:alnum:]]¤Ê¤É)¤Ï»È¤¨¤Ê¤¤¡£ Ȭ¿Êɽµ­¤ä½½Ï»¿Êɽµ­¤Î¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ï¡¢¤½¤ì¤¬Àµµ¬É½¸½¤Î ¥á¥¿¥­¥ã¥é¥¯¥¿¤òɽ¤¹¤â¤Î¤Ç¤¢¤Ã¤Æ¤â¥ê¥Æ¥é¥ë¤È¤·¤Æ°·¤ï¤ì¤ë¡£

--re-interval

`--traditional' ¤¬»ØÄꤵ¤ì¤¿¾ì¹ç¤Ç¤âinterval expression¤Î»ÈÍѤò µö²Ä¤¹¤ë(`--posix' ¤Ï¼«Æ°Åª¤Ëinterval expressions¤òÍ­¸ú¤Ë¤¹¤ë¡£ ¤³¤Î¤¿¤á¡¢`--posix'¤¬»È¤ï¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï`--re-interval'¤Ï ;·×¤Ç¤¢¤ë)¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.6 Case Sensitivity in Matching

Àµµ¬É½¸½¤Ë¤ª¤±¤ëÂ羮ʸ»ú¤Î°ã¤¤¤Ï¡¢Ä̾ï¤Î¥­¥ã¥é¥¯¥¿(¥á¥¿¥­¥ã¥é¥¯¥¿¤Ç¤Ê¤¤¤â¤Î) ¤È¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤Î¥Þ¥Ã¥Á¥ó¥°Î¾Êý¤Ç¶èÊ̤µ¤ì¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢Àµµ¬É½¸½Ãæ¤Î`w'¤Ï¾®Ê¸»ú¤Î`w'¤Ë¤Î¤ß¥Þ¥Ã¥Á¤·¡¢ Âçʸ»ú¤Î`W'¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤¡£

Â羮ʸ»ú¤ò¶èÊ̤·¤Ê¤¤¥Þ¥Ã¥Á¥ó¥°¤ÎºÇ¤â´Êñ¤ÊÊýË¡¤Ï¡¢`[Ww]'¤Î¤è¤¦¤Ë ¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤ò»È¤¦¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£¤·¤«¤·¤Ê¤¬¤é ¤³¤ì¤ÏÉÑÈˤ˻Ȥ¦¤È¤­¤Ë¤Ï°·¤¤¤Ë¤¯¤¤¤â¤Î¤Ç¤¢¤ê¡¢Àµµ¬É½¸½¤ò ÆÉ¤ß¤Å¤é¤¤¤â¤Î¤Ë¤·¤Æ¤·¤Þ¤¦¡£¤è¤êÎɤ¤¤Ç¤¢¤í¤¦²óÈòºö¤¬Æó¤Ä¤¢¤ë¡£

¥×¥í¥°¥é¥à¤ÎÆÃÄê¤Î¾ì½ê¤ÇÂ羮ʸ»ú¤ò¶èÊ̤·¤Ê¤¤¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤¦ÊýË¡¤Î°ì¤Ä¤¬ ÂоݤȤʤë¥Ç¡¼¥¿¤ÎÂ羮ʸ»ú¤òtolower¤ätoupper¤È¤¤¤Ã¤¿ ÁȤ߹þ¤ß¤Îʸ»úÎó´Ø¿ô(¤Þ¤ÀÀâÌÀ¤·¤Æ¤¤¤Ê¤¤¡£see section ʸ»úÎóÁàºî´Ø¿ô)¤ò»È¤Ã¤Æ Àµµ¬²½¤·¤Æ¤·¤Þ¤¦¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£¤¿¤È¤¨¤Ð

 
tolower($1) ~ /foo/  { … }
  

¤³¤ì¤ÏÂè°ì¥Õ¥£¡¼¥ë¥É¤ò¡¢¤½¤ì¤ËÂФ·¤Æ¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤¦Á°¤Ë¾®Ê¸»ú¤Ë ÊÑ´¹¤·¤Æ¤¤¤ë¡£¤³¤ì¤ÏPOSIX½àµò¤Îawk¤Çưºî¤¹¤ë¡£

¤â¤¦°ì¤Ä¤Î¡¢gawk¤Ë¸ÇÍ­¤Î¤ä¤êÊý¤Ï IGNORECASE¤È¤¤¤¦ÊÑ¿ô(see section ÁȤ߹þ¤ßÊÑ¿ô)¤Ë¥¼¥í°Ê³°¤ÎÃͤò ¥»¥Ã¥È¤¹¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ IGNORECASE¤Ë¥¼¥í°Ê³°¤¬¥»¥Ã¥È¤µ¤ì¤¿¤È¤­¡¢¤¹¤Ù¤Æ¤Î Àµµ¬É½¸½±é»»µÚ¤Óʸ»úÎó±é»»¤Ë¤ª¤¤¤ÆÂ羮ʸ»ú¤Î°ã¤¤¤¬Ìµ»ë¤µ¤ì¤ë¡£ IGNORECASE¤ÎÃͤÎÊѹ¹¤Ï¥×¥í¥°¥é¥à¤Î¼Â¹Ô»þ¤ËÂ羮ʸ»ú¤Ë ´Ø¤¹¤ëưºî¤òưŪ¤ËÀ©¸æ¤¹¤ë¡£ IGNORECASE¤Ï¤Û¤È¤ó¤É¤ÎÊÑ¿ô¤¬¤½¤¦¤Ç¤¢¤ë¤è¤¦¤Ë½é´üÃͤ¬¥¼¥í¤Ç¤¢¤ë¤Î¤Ç¡¢ ¥Ç¥Õ¥©¥ë¥È¤Ç¤ÏÂ羮ʸ»ú¤Î°ã¤¤¤ÏÍ­¸ú¤Ç¤¢¤ë¡£

 
x = "aB"
if (x ~ /ab/) …   # ¤³¤Î¥Æ¥¹¥È¤Ï¼ºÇÔ¤¹¤ë

IGNORECASE = 1
if (x ~ /ab/) …   # º£ÅÙ¤ÏÀ®¸ù¤¹¤ë
  

°ìÈÌŪ¤Ë¤Ï¡¢IGNORECASSE¤ò°ìÉô¤Î¥ë¡¼¥ë¤ÇÂ羮ʸ»ú¤Î°ã¤¤¤ò ̵»ë¤·¡¢¤½¤ì°Ê³°¤Î¥ë¡¼¥ë¤Ç¤Ï°ã¤¤¤òÍ­¸ú¤Ë¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ë»È¤¦¤³¤È¤Ï ¤Ç¤­¤Ê¤¤¡£¤Ê¤¼¤Ê¤é¡¢IGNORECASE¤òÆÃÄê¤Î¥ë¡¼¥ë¤Î ¥Ñ¥¿¡¼¥ó¤Î¤¿¤á¤Ë¥»¥Ã¥È¤¹¤ëľÀܤΤä¤êÊý¤¬¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£ (15)

IGNORECASE¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤äBEGIN¥ë¡¼¥ë¤ÎÃæ¤Ç ÀßÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë(see section ¤½¤Î¾¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¡¢see section ¥¹¥¿¡¼¥È¥¢¥Ã¥×¤È¥¯¥ê¡¼¥ó¥¢¥Ã¥×¤Î¥¢¥¯¥·¥ç¥ó)¡£ ¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤éIGNORECASE¤òÀßÄꤹ¤ë¤³¤È¤Ï ¥×¥í¥°¥é¥à¤òÊÔ½¸¤¹¤ë¤³¤È¤Ê¤¯Â羮ʸ»ú¤ò̵»ë¤¹¤ë¤è¤¦¤Ë¤¹¤ëÊýË¡¤Ç¤¢¤ë¡£

gawk¤Î3.0¤è¤êÁ°¤Ç¤Ï¡¢IGNORECASE¤ÎÃÍ¤Ï Àµµ¬É½¸½Áàºî¤ËÂФ·¤Æ¤Î¤ß±Æ¶Á¤òµÚ¤Ü¤·¤Æ¤¤¤Æ¡¢ `=='¤ä`!='¤Ê¤É¤Îʸ»úÎóÈæ³Ó¤Ë¤Ï±Æ¶Á¤·¤Ê¤«¤Ã¤¿¡£ ¥Ð¡¼¥¸¥ç¥ó 3.0 ¤«¤é¡¢Àµµ¬É½¸½¤Èʸ»úÎóÈæ³Ó¤ÎξÊý¤ÎÁàºî¤Ë IGNORECASE¤¬±Æ¶Á¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£

gawk 3.0¤«¤é¡¢Âçʸ»ú¤È¾®Ê¸»ú¤Î´Ö¤ÎÅù²ÁÀ­¤ÏISO-8859-1(ISO Latin-1) ¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤Ë´ð¤Å¤¤¤¿¤â¤Î¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤³¤Î¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤Ï ÅÁÅýŪ¤Ê128¤ÎASCII¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤Î¥¹¡¼¥Ñ¡¼¥»¥Ã¥È¤Ç¤¢¤ê¡¢¥è¡¼¥í¥Ã¥Ñ¤Ç »È¤ï¤ì¤ë¥­¥ã¥é¥¯¥¿¤Î¿¤¯¤òÄ󶡤·¤Æ¤¤¤ë¡£

gawk 3.1.4 ¤Ç¤Ï¡¢Â羮ʸ»ú¤Î°ã¤¤¤Ï¥í¥«¡¼¥ë¤ò°Õ¼±¤¹¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£ ¤³¤ì¤Ïisalpha()¤ätouuper()¤Î¤è¤¦¤Ê¡¢ C¤Î<ctype.h>µ¡Ç½¤Ë´ð¤Å¤¯¤â¤Î¤Ç¤¢¤ë¡£

IGNORECASE¤ÎÃͤÏgawk¤¬¸ß´¹¥â¡¼¥É(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó) ¤Î¤È¤­¤Ï²¿¤Î¸ú²Ì¤âµÚ¤Ü¤µ¤Ê¤¤¡£¸ß´¹¥â¡¼¥É¤Ç¤ÏÂ羮ʸ»ú¤Ï¾ï¤Ë¶èÊ̤µ¤ì¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.7 ¤É¤Î¤¯¤é¤¤¥Æ¥­¥¹¥È¤¬¥Þ¥Ã¥Á¤¹¤ë¤«?

°Ê²¼¤ÎÎã¤Ë¤Ä¤¤¤Æ¹Í¤¨¤Æ¤ß¤è¤¦

 
echo aaaabcd | awk '{ sub(/a+/, "<A>"); print }'
  

¤³¤ì¤Ïsub´Ø¿ô(¤Þ¤À¤³¤ì¤ÏÀâÌÀ¤·¤Æ¤¤¤Ê¤¤¡£see section ʸ»úÎóÁàºî´Ø¿ô) ¤ò»È¤Ã¤ÆÆþÎϥ쥳¡¼¥É¤òÊѹ¹¤¹¤ëÎã¤Ç¤¢¤ë¡£ ¤³¤³¤Ç¡¢/a+/¤È¤¤¤¦Àµµ¬É½¸½¤Ï``°ì¤Ä°Ê¾å¤Î`a'''¤òɽ¤·¤Æ¤ª¤ê¡¢ ¤½¤ì¤Ë¥Þ¥Ã¥Á¤¹¤ë¥Æ¥­¥¹¥È¤ò``<A>'¤ËÃÖ¤­´¹¤¨¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£

ÆþÎϤˤϻͤĤÎ`a'¤¬¤¢¤ë¡£½ÐÎϤϤɤ¦¤Ê¤ë¤À¤í¤¦¤«? awk(¤ÈPOSIX)¤ÎÀµµ¬É½¸½¤Ï¡¢¾ï¤Ë¥Þ¥Ã¥Á¤¹¤ë¤â¤Î¤Î¤¦¤ÁºÇ¤âº¸¤Ë¤¢¤ê¡¢ ºÇ¤âŤ¤¥­¥ã¥é¥¯¥¿¤ÎʤӤ˥ޥåÁ¤¹¤ë (ºÇº¸ºÇŰìÃ×)¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢ ¤³¤ÎÎã¤Ç¤Ï»Í¤Ä¤ÎϢ³¤·¤¿`a'¤¬(°ì¤Ä¤Î)`<A>'¤ËÃÖ¤­´¹¤¨¤é¤ì¤ë¡£

 
$ echo aaaabcd | awk '{ sub(/a+/, "<A>"); print }'
-| <A>bcd
  

ñ½ã¤Ë¥Þ¥Ã¥Á¤¹¤ë/¤·¤Ê¤¤¤ò¥Æ¥¹¥È¤¹¤ë¤È¤­¤Ë¤Ïº£½Ò¤Ù¤¿»ö¤Ï¤µ¤·¤Æ½ÅÍפǤϤʤ¤¡£ ¤·¤«¤·¡¢Àµµ¬É½¸½¤Ë´ð¤Å¤¤¤¿¥Õ¥£¡¼¥ë¥É¤ä¥ì¥³¡¼¥É¤Îʬ³ä¡¢ ¤½¤·¤Æmatch, sub, gsub, gensub ¤È¤¤¤Ã¤¿´Ø¿ô ¤ò»ÈÍѤ·¤Æ¥Æ¥­¥¹¥È¤Î¥Þ¥Ã¥Á¥ó¥°¤äÃÖ¤­´¹¤¨¤ò¤¹¤ë¾ì¹ç¤Ë¤ÏÈó¾ï¤Ë½ÅÍפǤ¢¤ë¡£ ¤³¤Î¸¶Â§¤òÍý²ò¤¹¤ë»ö¤ÏÀµµ¬É½¸½¤Ë´ð¤Å¤¤¤¿¥ì¥³¡¼¥É/¥Õ¥£¡¼¥ë¥É¤Îʬ³ä¤Î¤¿¤á¤Ë¤â½ÅÍפǤ¢¤ë (see section ÆþÎϤ¬¤É¤Î¤è¤¦¤Ë¥ì¥³¡¼¥É¤Ëʬ³ä¤µ¤ì¤ë¤«¤ª¤è¤Ósee section ¥Õ¥£¡¼¥ë¥É¤¬¤É¤Î¤è¤¦¤Ëʬ³ä¤µ¤ì¤ë¤«¤òÆÃÄꤹ¤ë)¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.8 ưŪÀµµ¬É½¸½¤ò»È¤¦

`~'±é»»»Ò¤ä`!~'±é»»»Ò¤Î±¦ÊÕ¤ËÃÖ¤¯¤â¤Î¤ÏÀµµ¬É½¸½Äê¿ô (¥¹¥é¥Ã¥·¥å¤Î´Ö¤ËÃÖ¤«¤ì¤¿Ê¸»úÎó)¤Ç¤¢¤ëɬÍפϤʤ¯¡¢Ç¤°Õ¤Î¼°¤òÃÖ¤¯¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤Î¤è¤¦¤Ê¼°¤Ïɾ²Á¤µ¤ì¡¢É¬Íפ¬¤¢¤ì¤Ðʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤ë¡£ ɾ²Á¤µ¤ìÊÑ´¹¤¬¹Ô¤Ê¤ï¤ì¤¿·ë²Ì¤ÏÀµµ¬É½¸½¤È¤·¤Æ°·¤ï¤ì¤ë¡£ ¤³¤Î¤è¤¦¤Ë±é»»¤¬¹Ô¤ï¤ì¤ëÀµµ¬É½¸½¤ÏưŪÀµµ¬É½¸½(dynamic regular expression)¤È¸Æ¤Ð¤ì¤ë¡£Îã¤òµó¤²¤è¤¦¡£

 
BEGIN { digits_regexp = "[[:digit:]]+" }
$0 ~ digits_regexp    { print }
  

¤³¤ì¤Ïdigits_regexp¤Ë°ì¤Ä°Ê¾å¤Î¿ô»ú¤òɽ¤¹Àµµ¬É½¸½¤ò¥»¥Ã¥È¤·¤Æ ¤½¤ì¤òÆþÎϥ쥳¡¼¥É¤ËÂФ·¤Æ¥Þ¥Ã¥Á¥ó¥°¤·¤Æ¤¤¤ë¡£

·Ù¹ð: `~'±é»»»Ò¤ä`!~'±é»»»Ò¤ò»È¤Ã¤¿¾ì¹ç¡¢ ¥¹¥é¥Ã¥·¥å¤Ç°Ï¤Þ¤ì¤¿Àµµ¬É½¸½Äê¿ô¤ÈÆó½Å°úÍÑÉä¤Ç°Ï¤Þ¤ì¤¿Ê¸»úÎóÄê¿ô¤È¤Ç¤Ï°ã¤¤¤¬¤¢¤ë¡£ ʸ»úÎóÄê¿ô¤ò»È¤ª¤¦¤È¤¹¤ë¾ì¹ç¡¢Ê¸»úÎ󤬯óÅÙÁöºº¤µ¤ì¤ë¤³¤È¤òÍý²ò¤¹¤ëɬÍפ¬¤¢¤ë¡£ °ìÅÙÌܤÏawk¤¬¥×¥í¥°¥é¥à¤òÆÉ¤ß¹þ¤ó¤À¤È¤­¤Ç¡¢ ÆóÅÙÌܤϱ黻»Ò¤Îº¸Â¦¤ËÃÖ¤«¤ì¤¿Ê¸»úÎó¤È±¦Â¦¤Î¥Ñ¥¿¡¼¥ó¤È¤Î¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤¦¤È¤­¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¼°¤È¤·¤ÆÉ¾²Á¤µ¤ì¤ë(Àè¤ÎÎã¤Ç¸À¤¦ digits_regexp¤Î¤è¤¦¤Ë) Ǥ°Õ¤Îʸ»úÎó¤Ë¤ª¤¤¤Æ¿¿¤Ç¤¢¤ê¡¢Ê¸»úÎóÄê¿ô¤½¤Î¤â¤Î¤Ë¤Ï¤¢¤Æ¤Ï¤Þ¤é¤Ê¤¤¡£

ʸ»úÎ󤬯óÅÙÁöºº¤µ¤ì¤ë¤³¤È¤Ë¤è¤ë°ã¤¤¤È¤Ï¤Ê¤ó¤À¤í¤¦¤«? ¤½¤ÎÅú¤¨¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¡¢ÆÃ¤Ë¥Ð¥Ã¥¯¥¹¥é¥·¥å¤Î¿¶¤ëÉñ¤¤¤Ë¤¢¤ë¡£ Àµµ¬É½¸½¤òÄ̤·¤ÆÊ¸»úÎóÃæ¤Ë¤¢¤ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤òÆÀ¤ë¤Ë¤Ï¡¢ Æó¤Ä¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤òÃÖ¤«¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

Î㤨¤Ð¡¢/\*/ ¤Ï `*'¤È¤¤¤¦Ê¸»ú¤Ë¥Þ¥Ã¥Á¤¹¤ëÀµµ¬É½¸½Äê¿ô¤Ç¤¢¤ê¡¢ ¤³¤ì¤Ï¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å°ì¤Ä¤òɬÍפȤ¹¤ë¡£ Ʊ¤¸¤â¤Î¤òʸ»úÎó¤ò»È¤Ã¤Æ¹Ô¤¦¤Ë¤Ï¡¢"\\*"¤È¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤À¤í¤¦¡£ ºÇ½é¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ÏÆó¸Ä¤á¤Î¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤ò¥¨¥¹¥±¡¼¥×¤¹¤ë¤â¤Î¤Ç¤¢¤ê¡¢ ¤³¤ì¤Ë¤è¤Ã¤Æ¤³¤Îʸ»úÎó¤Ï`\'¤È`*'¤È¤¤¤¦Æó¤Ä¤Î¥­¥ã¥é¥¯¥¿¤«¤é¤Ê¤ëʸ»úÎó¤È¤Ê¤ë¡£

Àµµ¬É½¸½¤òµ­½Ò¤¹¤ë¤Î¤ËÀµµ¬É½¸½Äê¿ô¤Èʸ»úÎóÄê¿ô¤ÎξÊý¤¬»È¤¨¤ë¤È¤­¡¢ ¤É¤Á¤é¤ò»È¤Ã¤¿¤Û¤¦¤¬Îɤ¤¤Î¤À¤í¤¦¤«? ¤½¤ÎÅú¤¨¤Ï``Àµµ¬É½¸½Äê¿ô''¤Ç¤¢¤ë¡£ °Ê²¼¤Ë¤½¤ÎÍýͳ¤òµó¤²¤ë¡£

Advanced Notes: ưŪÀµµ¬É½¸½¤Î¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤Ç \n ¤ò»È¤¦

°ìÉô¤Î¾¦ÍÑ awk ¤Ç¤Ï ưŪÀµµ¬É½¸½¤Î¥­¥ã¥é¥¯¥¿¥ê¥¹¥È¤ÎÃæ¤Ç ²þ¹Ô¤ò»È¤¦¤³¤È¤òµö¤·¤Æ¤¤¤Ê¤¤:

 
$ awk '$0 ~ "[ \t\n]"'
error--> awk: newline in character class [
error--> ]...
error-->  source line number 1
error-->  context is
error-->          >>>  <<<
   

¤·¤«¤·Àµµ¬É½¸½Äê¿ôÃæ¤Î²þ¹Ô¤Ë¤ÏÌäÂê¤Ï¤Ê¤¤:

 
$ awk '$0 ~ /[ \t\n]/'
here is a sample line
-| here is a sample line
Ctrl-d
   

gawk does not have this problem, and it isn't likely to occur often in practice, but it's worth noting for future reference.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

2.9 Where You Are Makes A Difference

[ÌõÃí] WindowsÈǤǤϴط¸¤¢¤ê¤Þ¤»¤ó¡£

¸½ÂåŪ¤Ê¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥í¥«¡¼¥ë(locales)¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë: ¥·¥¹¥Æ¥à¤ËÂФ·¤Æ¤½¤ÎÃϰè¤Î¥­¥ã¥é¥¯¥¿¥»¥Ã¥È¤ä¸À¸ì¤òÃΤ餻¤ë¤â¤Î¤Ç¤¢¤ë¡£ ¥«¥ì¥ó¥È¤Î¥í¥«¡¼¥ëÀßÄê¤ÏÀµµ¬É½¸½¥Þ¥Ã¥Á¥ó¥°¤Îưºî¤Ë±Æ¶Á¤òµÚ¤Ü¤·¡¢ ¤·¤Ð¤·¤Ð¶Ã¤­¤Î¸µ¤È¤Ê¤ë¡£ÆÃ¤Ë¡¢Â¿¤¯¤Î¥í¥«¡¼¥ë¤Ç¤Ï ¤¢¤Ê¤¿¤¬Â羮ʸ»ú¤¤¤º¤ì¤«¤Î¥­¥ã¥é¥¯¥¿¤òÆÃÄꤷ¤Æ¤¤¤¿¤È¤·¤Æ¤â Â羮ʸ»ú¤Î°ã¤¤¤ò̵»ë¤·¤¿¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤¦¡£

°Ê²¼¤Ëµó¤²¤¿Îã¤Ïsub´Ø¿ô¤ò»È¤Ã¤¿¤â¤Î¤Ç¡¢¥Æ¥­¥¹¥È¤Î ÃÖ¤­´¹¤¨¤ò¹Ô¤¦¤â¤Î¤Ç¤¢¤ë(see section ʸ»úÎóÁàºî´Ø¿ô)¡£ ¤³¤³¤Ç¡¢¹ÔËö¤Ë¤¢¤ëÂçʸ»ú¤Î¥­¥ã¥é¥¯¥¿Îó¤ò¼è¤ê½ü¤³¤¦¤È¤·¤Æ¤¤¤ë:

 
$ echo something1234abc | gawk '{ sub("[A-Z]*$", ""); print }'
-| something1234
   

`something1234abc'¤ÎËöÈø¤Ë¤¢¤ë`abc'¤ÏÄ̾ï¤Ï`[A-Z]*'¤Ë ¥Þ¥Ã¥Á¤¹¤Ù¤­¤Ç¤Ê¤¤¤Î¤Ç¤³¤Î·ë²Ì¤Ïͽ´ü¤·¤Ê¤¤¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¥í¥«¡¼¥ëÀßÄê¤Ë¤è¤ë¤â¤Î¤Ç¤¢¤ë(¤·¤¿¤¬¤Ã¤Æ¤¢¤Ê¤¿¤Î»È¤Ã¤Æ¤¤¤ë ¥·¥¹¥Æ¥à¤Ë¤è¤Ã¤Æ¤Ï¤³¤Î¤è¤¦¤Ê·ë²Ì¤Ë¤Ï¤Ê¤é¤Ê¤¤¤À¤í¤¦)¡£ Âбþºö¤ÏÆó¤Ä¤¢¤ë¡£°ì¤ÄÌܤÏPOSIX¤Î¥­¥ã¥é¥¯¥¿¥¯¥é¥¹`[[:upper:]]'¤ò `[A-Z]'¤ÎÂå¤ï¤ê¤Ë»È¤¦¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ Æó¤ÄÌܤϡ¢¥í¥«¡¼¥ëÀßÄê¤ògawk¤ò¼Â¹Ô¤¹¤ëÁ°¤ËÊѹ¹¤·¤Æ¤·¤Þ¤¦ ¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë:

 
LANG=C LC_ALL=C
export LANG LC_ALL
   

`C'¤È¤¤¤¦ÀßÄê¤Ïgawk¤ËÅÁÅýŪ¤ÊUnix¤Ç¤Î¤ä¤êÊý¡¢ ¤Ä¤Þ¤êÂ羮ʸ»ú¤ò¶èÊ̤¹¤ë¤È¤¤¤¦Æ°ºî¤ò¶¯À©¤¹¤ë¡£ ¤¢¤Ê¤¿¤Ï¤³¤ì¤é¤Îʸ¤ò¥·¥§¥ë¤Î¥¹¥¿¡¼¥È¥¢¥Ã¥×¥Õ¥¡¥¤¥ë(`$HOME/.profile'¤Ê¤É) ¤ËÄɲ䷤褦¤È¹Í¤¨¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

ƱÍͤʤ³¤È¤¬Ê̤ÎÈϰϤˤĤ¤¤Æ¤â¸ºß¤¹¤ë¡£¤¿¤È¤¨¤Ð¡¢ `["-/]'¤ÏASCII¤Ë¤ª¤¤¤Æ¤Ï´°Á´¤Ë¹çË¡¤Ê¤â¤Î¤Ç¤¢¤ë¤¬¡¢ `en_US.UTF-8'¤Î¤è¤¦¤Ê¿¤¯¤ÎUnicode¥í¥«¡¼¥ë¤Ë¤ª¤¤¤Æ¤Ï ÀµÅö¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¤ (°ìÈÌŪ¤Ë¤Ï¡¢¤³¤Î¤è¤¦¤ÊÈϰϤϻȤ¦¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£Âå¤ï¤ê¤Ë ¤³¤³¤Î¥­¥ã¥é¥¯¥¿¤òʤ٤¿¥ê¥¹¥È¤«¡¢`[[:punct:]]'¤Î¤è¤¦¤Ê POSIX¤Î¥­¥ã¥é¥¯¥¿¥¯¥é¥¹¤ò»ÈÍѤ¹¤ë)¡£

`RS = "\n"'¤ÏÄ̾ï¤Î¾ì¹ç¡¢¥í¥«¡¼¥ë¤Ï̵´Ø·¸¤Ê¤â¤Î¤Ç¤¢¤ë¡£ `LC_ALL=C'¤ò»È¤Ã¤¿¤½¤Î¾¤Îñ°ì¥Ð¥¤¥È¤Î¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤Ï ¥ì¥³¡¼¥É¤ÎÆÉ¤ß¹þ¤ß¤ÎºÝ¤Ë¤è¤ê¤è¤¤¥Ñ¥Õ¥©¡¼¥Þ¥ó¥¹¤ò¤â¤¿¤é¤¹¤À¤í¤¦¡£ ¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¡¢gawk¤Ï¥ì¥³¡¼¥É¤ò¶èÀÚ¤ê¤òõ¤¹¤¿¤á¤Ë ÆþÎϤµ¤ì¤ë¥­¥ã¥é¥¯¥¿¤´¤È¤Ë´ö¤Ä¤«¤Î´Ø¿ô¸Æ¤Ó½Ð¤·¤ò¹Ô¤ï¤Í¤Ð¤Ê¤é¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3. ÆþÎÏ¥Õ¥¡¥¤¥ë¤òÆÉ¤à

ŵ·¿Åª¤Êawk¥×¥í¥°¥é¥à¤Ç¤Ï¡¢¤¹¤Ù¤Æ¤ÎÆþÎϤÏɸ½àÆþÎÏ (¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥­¡¼¥Ü¡¼¥É¤À¤¬¡¢¤Û¤È¤ó¤É¤Î¾ì¹ç¤Ï¾¤Î¥³¥Þ¥ó¥É¤«¤é¤Î¥Ñ¥¤¥×)¤« ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤¿Ì¾Á°¤ò»ý¤Ä¥Õ¥¡¥¤¥ë¤Î¤É¤Á¤é¤«¤«¤éÆÉ¤ß¹þ¤Þ¤ì¤ë¡£ ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò»ØÄꤷ¤Æ¤¤¤ë¾ì¹ç¡¢ awk¤Ï»ØÄꤷ¤¿½çÈ֤˽¾¤Ã¤Æ¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤ÎÆÉ¤ß¹þ¤ß¤ò¹Ô¤¦¡£ ¤¢¤ë»þÅÀ¤Ç½èÍý¤·¤Æ¤¤¤ëÆþÎÏ¥Õ¥¡¥¤¥ë¤Î¥Õ¥¡¥¤¥ë̾¤Ï Áȹþ¤ßÊÑ¿ôFILENAME(see section ÁȤ߹þ¤ßÊÑ¿ô)¤«¤éÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

ÆþÎϤϥ쥳¡¼¥É¤È¸Æ¤Ð¤ì¤ëñ°Ì¤ÇÆÉ¤ß¹þ¤Þ¤ì¡¢¥×¥í¥°¥é¥à¤Ëµ­½Ò¤µ¤ì¤¿¥ë¡¼¥ë¤Ë½¾¤¤¡¢ °ìÅ٤˰ì¤Ä¤Î¥ì¥³¡¼¥É¤ò½èÍý¤¹¤ë¡£¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï³Æ¥ì¥³¡¼¥É¤Ï¤Ò¤È¤Ä¤Î¹Ô¤Ç¤¢¤ë¡£ ³Æ¥ì¥³¡¼¥É¤Ï¥Õ¥£¡¼¥ë¥É¤È¸Æ¤Ð¤ì¤ë²ô¤Ë¼«Æ°Åª¤Ëʬ³ä¤µ¤ì¤ë¡£ ¤³¤ì¤Ï¤¢¤ë¥ì¥³¡¼¥É¤Î°ìÉôʬ¤Ë¤Ä¤¤¤Æºî¶È¤ò¹Ô¤¦¥×¥í¥°¥é¥à¤ËÊØÍø¤Ç¤¢¤ë¡£

¤Þ¤ì¤ËÆÃÊ̤ʾì¹ç¤Ë¡¢getline¥³¥Þ¥ó¥É¤ò»È¤¦É¬Íפˤ»¤Þ¤é¤ì¤ë¤³¤È¤¬¤¢¤ë¤À¤í¤¦¡£ getline¥³¥Þ¥ó¥É¤ÏǤ°Õ¤Î¿ô¤Î¥Õ¥¡¥¤¥ë¤«¤éÍÛ¤ËÆþÎϤò¹Ô¤¦¤³¤È¤ò²Äǽ¤Ë¤·¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Ç̾Á°¤ò»ØÄꤷ¤Ê¤¯¤Æ¤â¥Õ¥¡¥¤¥ë¤«¤éÆÉ¤ß¹þ¤ß¤¬¤Ç¤­¤ë¤Î¤Ç½ÅÊõ¤¹¤ë (see section getline¤ò»È¤Ã¤¿ÆþÎÏ)¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.1 ÆþÎϤ¬¤É¤Î¤è¤¦¤Ë¥ì¥³¡¼¥É¤Ëʬ³ä¤µ¤ì¤ë¤«

awk¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Ïawk¥×¥í¥°¥é¥à¤ËÂФ¹¤ëÆþÎϤò ¥ì¥³¡¼¥É¤È¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤¹¤ë¡£ awk¤Ï¸½ºß½èÍý¤·¤Æ¤¤¤ëÆþÎÏ¥Õ¥¡¥¤¥ë¤«¤éÆÉ¤ß½Ð¤·¤¿ ¥ì¥³¡¼¥É¤Î¿ô¤òµ­Ï¿¤·¤Æ¤¤¤ë¡£¤³¤ÎÃͤÏÁȤ߹þ¤ßÊÑ¿ôFNR¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¡£ ¤³¤ì¤Ï¿·¤¿¤Ê¥Õ¥¡¥¤¥ë¤ò½èÍý¤·»Ï¤á¤¿¤È¤­¤Ë¤Ï¥¼¥í¤Ë¥ê¥»¥Ã¥È¤µ¤ì¤ë¡£ Ê̤ÎÁȤ߹þ¤ßÊÑ¿ô¤ËNR¤¬¤¢¤ë¡£¤³¤ì¤Ï¤¹¤Ù¤Æ¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤«¤é ÆÉ¤ß½Ð¤·¤¿ÆþÎϥ쥳¡¼¥É¤Î¿ô¤ò³ÊǼ¤·¤Æ¤¤¤ë¡£ÊÑ¿ô¤ÎÃͤϥ¼¥í¤«¤é»Ï¤Þ¤ë¤¬ ¥ê¥»¥Ã¥È¤µ¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£

¥ì¥³¡¼¥É¤Ï¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤È¸Æ¤Ð¤ì¤ë¥­¥ã¥é¥¯¥¿¤Ë¤è¤Ã¤ÆÊ¬³ä¤µ¤ì¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¡¢¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤Ï²þ¹Ô¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥ì¥³¡¼¥É¤¬Ã±°ì¤Î¹Ô¤Ç¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£ Áȹþ¤ßÊÑ¿ô¤ÎRS¤ËÃͤò¥»¥Ã¥È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ ¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤òÊ̤Υ­¥ã¥é¥¯¥¿¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¾¤ÎÊÑ¿ô¤ÈƱ¤¸¤è¤¦¤Ë¡¢RS¤Ïawk¥×¥í¥°¥é¥à¤ÎÃæ¤Ç ÂåÆþ±é»»»Ò`='(see section ÂåÆþ¼°)¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¤½¤ÎÃͤò Êѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¿·¤¿¤Ê¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤Î¥­¥ã¥é¥¯¥¿¤Ïʸ»úÎóÄê¿ô¤òɽ¤¹¥¯¥©¡¼¥Æ¡¼¥·¥ç¥ó¥Þ¡¼¥¯¤Ç °Ï¤Þ¤ì¤Æ¤¤¤ë¤Ù¤­¤Ç¤¢¤ë¡£ÂåÆþ¤ò¹Ô¤¦Àµ¤·¤¤¥¿¥¤¥ß¥ó¥°¤Ï ¤Û¤È¤ó¤É¤Î¾ì¹ç¼Â¹Ô¤ÎºÇ½é¡¢²¿¤é¤«¤ÎÆþÎϤ¬¹Ô¤ï¤ì¤ëÁ°¤Ç¤¢¤ë¡£ ¤³¤ì¤Ë¤è¤ê°ìÈֺǽé¤Î¥ì¥³¡¼¥É¤¬Àµ¤·¤¤¶èÀÚ¤ê¤Ë¤è¤Ã¤ÆÆÉ¤ß¹þ¤Þ¤ì¤ë¡£ ¤³¤ì¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï¡¢ÆÃ¼ì¤ÊBEGIN¥Ñ¥¿¡¼¥ó¤ò»ÈÍѤ¹¤ë (see section ÆÃ¼ì¥Ñ¥¿¡¼¥ó BEGIN ¤È END)¡£ Î㤨¤Ð:

 
awk 'BEGIN { RS = "/" }
     { print $0 }' BBS-list
   

¤³¤ÎÎã¤Ç¤Ï¡¢ÆþÎϤò¹Ô¤¦Á°¤ËRS¤ËÃͤò"/"¤ËÊѹ¹¤·¤Æ¤¤¤ë¡£ ¤³¤ì¤Ï¥¹¥é¥Ã¥·¥å¤¬ÀèÆ¬¤Ë¤¢¤ëʸ»úÎó¤Ç¤¢¤ê¡¢·ë²Ì¤È¤·¤Æ¥ì¥³¡¼¥É¤Ï¥¹¥é¥Ã¥·¥å¤Çʬ³ä¤µ¤ì¤ë¡£ ¤½¤Î¸å¤ÇÆþÎÏ¥Õ¥¡¥¤¥ë¤¬ÆÉ¤ß¹þ¤Þ¤ì¡¢ awk¥×¥í¥°¥é¥à¤ÎÆóÈÖÌܤΥ롼¥ë(¥Ñ¥¿¡¼¥ó¤Î¤Ê¤¤¥¢¥¯¥·¥ç¥ó) ¤Ë¤è¤Ã¤Æ³Æ¥ì¥³¡¼¥É¤¬½ÐÎϤµ¤ì¤ë¡£³Æprintʸ¤Ï¤½¤Î½ÐÎϤκǸå¤Ë²þ¹Ô¤òÄɲ乤ë¤Î¤Ç¡¢ ¤³¤Îawk¥×¥í¥°¥é¥à¤ÏÆþÎϤΥ¹¥é¥Ã¥·¥å¤ò²þ¹Ô¤ËÊÑ´¹¤·¤Æ¥³¥Ô¡¼¤¹¤ë¡£ ¼¡¤Ë¤³¤Î¥×¥í¥°¥é¥à¤ò `BBS-list'¤ËÂФ·¤Æ¼Â¹Ô¤·¤¿¤È¤­¤Î·ë²Ì¤ò¼¨¤¹:

 
$ awk 'BEGIN { RS = "/" }
>      { print $0 }' BBS-list
-| aardvark     555-5553     1200
-| 300          B
-| alpo-net     555-3412     2400
-| 1200
-| 300     A
-| barfly       555-7685     1200
-| 300          A
-| bites        555-1675     2400
-| 1200
-| 300     A
-| camelot      555-0542     300               C
-| core         555-2912     1200
-| 300          C
-| fooey        555-1234     2400
-| 1200
-| 300     B
-| foot         555-6699     1200
-| 300          B
-| macfoo       555-6480     1200
-| 300          A
-| sdace        555-3430     2400
-| 1200
-| 300     A
-| sabafoo      555-2127     1200
-| 300          C
-|
   

the line looks like this: `camelot' BBS ¤Î¥¨¥ó¥È¥ê¤¬Ê¬³ä¤µ¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ¡£ ¸µ¤Î¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë (see section Îã¤Î¤¿¤á¤Î ¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë)¤Ç¤Ï¡¢ ¤³¤Î¤è¤¦¤Ê¹Ô¤À¤Ã¤¿¡£

 
camelot      555-0542     300               C
   

¾¤ÎÆó¤Ä°Ê¾å¤Î¥Ü¡¼¥ì¡¼¥È¤ò»ý¤Ä¤È¤³¤í¤È¤Ï°Û¤Ê¤ê ¤½¤³¤Ë¤Ï¥Ü¡¼¥ì¡¼¥È¤¬°ì¤Ä¤À¤±¤·¤«¤Ê¤¯¡¢¥¹¥é¥Ã¥·¥å¤¬¥ì¥³¡¼¥ÉÃæ¤Ë¤Ê¤¤¡£ »ö¼Â¡¢¤³¤Î¥ì¥³¡¼¥É¤Ï`core' BBS¤Î¤¿¤á¤Î¥ì¥³¡¼¥É¤Î°ìÉô¤È¤·¤Æ °·¤ï¤ì¤Æ¤¤¤ë¡£½ÐÎϤÎÃæ¤Ç¶èÀڤäƤ¤¤ë²þ¹Ô¤Ï¸µ¡¹¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¤¢¤Ã¤¿ ²þ¹Ô¤Ç¡¢awk¤¬¥ì¥³¡¼¥É¤ò½ÐÎϤ¹¤ë¤È¤­¤ËÉղä·¤¿¤â¤Î¤Ç¤Ï¤Ê¤¤!

¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤òÊѹ¹¤¹¤ë¤â¤¦°ì¤Ä¤Î¤ä¤êÊý¤Ï¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤ÇÊÑ¿ôÂåÆþ¤Îµ¡Ç½¤ò»È¤¦¤³¤È¤Ç¤¢¤ë (see section ¤½¤Î¾¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô):

 
awk '{ print $0 }' RS="/" BBS-list
   

¤³¤ì¤Ï`BBS-list'¤ò½èÍý¤¹¤ëÁ°¤ËRS¤Ë`/'¤ò¥»¥Ã¥È¤¹¤ë¡£

`/'¤Î¤è¤¦¤Ê°ìÈÌŪ¤Ç¤Ê¤¤¥­¥ã¥é¥¯¥¿¤ò¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤Ë»È¤¦¤³¤È¤Ï¡¢ ¤Û¤È¤ó¤É¤¹¤Ù¤Æ¤Î¾ì¹ç¤ËÀµ¤·¤¤·ë²Ì¤òÀ¸¤¸¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢°Ê²¼¤ÎÍͤÊ(¶Ëü¤Ê)¥Ñ¥¤¥×¥é¥¤¥ó¤Ç¤Ï¡¢°Õ³°¤Ë¤â`1'¤¬½ÐÎϤµ¤ì¤ë¡£ ¤½¤³¤Ë¤Ï²þ¹Ô¤«¤é¤Ê¤ë°ì¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤¬¤¢¤ë¡£

 
$ echo | awk 'BEGIN { RS = "a" } ; { print NF }'
-| 1
   

¤³¤³¤Ë¤Ï²þ¹Ô¤«¤é¤Ê¤ë°ì¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤¬¤¢¤ë¡£ Áȹþ¤ßÊÑ¿ô NF ¤ÎÃͤϥ«¥ì¥ó¥È¥ì¥³¡¼¥É¤Î¥Õ¥£¡¼¥ë¥É¤Î¿ô¤Ç¤¢¤ë¡£

ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤Ë㤹¤ë¤È¡¢¤½¤Î¥Õ¥¡¥¤¥ë¤ÎºÇ¸å¤Î¥­¥ã¥é¥¯¥¿¤¬ RS¤Ë¤¢¤ë¥­¥ã¥é¥¯¥¿¤Ç¤Ê¤¯¤Æ¤â¥«¥ì¥ó¥ÈÆþÎϥ쥳¡¼¥É¤ò½ªÃ¼¤¹¤ë (d.c.)¡£

¶õʸ»úÎó""(¥­¥ã¥é¥¯¥¿¤¬²¿¤â¤Ê¤¤Ê¸»úÎó)¤Ï¡¢ RS¤ÎÃͤȤ·¤Æ¤ÏÆÃÊ̤ʰÕÌ£¤ò»ý¤Ã¤Æ¤¤¤ë¡£ ¤½¤ì¤Ï¡¢¥ì¥³¡¼¥É¤ò°ì¹Ô°Ê¾å¤Î¶õ¹Ô¤Ç¶èÀÚ¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¾Ü¤·¤¯¤ÏSee section Ê£¿ô¹Ô¥ì¥³¡¼¥É.¡£

awk¤Î¼Â¹ÔÃæ¤ËRS¤ÎÃͤòÊѹ¹¤·¤¿¾ì¹ç¡¢ ¤½¤Î¿·¤·¤¤Ãͤϸ峤Υ쥳¡¼¥É¤Î¶èÀÚ¤ê¤Ë»ÈÍѤµ¤ì¤ë¤¬¡¢ ¸½ºß½èÍý¤µ¤ì¤Æ¤¤¤ë¥ì¥³¡¼¥É(¤È´û¤Ë½èÍý¤µ¤ì¤¿¥ì¥³¡¼¥É) ¤Ë¤Ï¤Ê¤ó¤Î±Æ¶Á¤âµÚ¤Ü¤µ¤Ê¤¤¡£

¥ì¥³¡¼¥É¤Î¶èÀڤ꤬½ªÎ»¤·¤¿¸å¤Ç¡¢gawk¤Ï RS¤Ë¥Þ¥Ã¥Á¤·¤¿ÆþÎÏÃæ¤Î ¥Æ¥­¥¹¥È¤ò RT ¤È¤¤¤¦ÊÑ¿ô¤Ë¥»¥Ã¥È¤¹¤ë¡£ gawk¤ò»È¤Ã¤Æ¤¤¤ë¤È¤­¤Ë¤ÏRS¤ÎÃͤϰìʸ»ú¤Ë¸ÂÄꤵ¤ì¤ë¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ Ǥ°Õ¤ÎÀµµ¬É½¸½ (see section Àµµ¬É½¸½)¤ò»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ °ìÈÌŪ¤Ë¤Ï³Æ¥ì¥³¡¼¥É¤Î½ªÃ¼¤Ë¤Ï¤½¤ÎÀµµ¬É½¸½¤Ë¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó¤¬Â³¤¤¤Æ¤ª¤ê¡¢ ¼¡¤Î¥ì¥³¡¼¥É¤Ï¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó¤Î½ªÃ¼¤Î¼¡¤«¤é»Ï¤Þ¤ë¡£ ¤³¤Î°ìÈÌŪ¤Ê¥ë¡¼¥ë¤ÏÄ̾ï¤ÎRS¤¬²þ¹Ô¤À¤±¤«¤é¤Ê¤Ã¤Æ¤¤¤ë¤è¤¦¤Ê¤È¤­¤Ë¤Ï¤¦¤Þ¤¯Æ¯¤¯¡£ ¥ì¥³¡¼¥É¤Ï¼¡¤Î¥Þ¥Ã¥Á¤¹¤ëʸ»úÎó¤ÎÀèÆ¬(ÆþÎϤμ¡¤Î²þ¹Ô)¤Ç½ª¤ï¤ê¡¢ ³¤¯¥ì¥³¡¼¥É¤Ï¤³¤Îʸ»úÎó¤Î¤¹¤°¸å(³¤¯¹Ô¤ÎÀèÆ¬¤Î¥­¥ã¥é¥¯¥¿)¤«¤é»Ï¤Þ¤ë¡£ ²þ¹Ô¤ÏRS ¤Ë¥Þ¥Ã¥Á¤¹¤ë¤Î¤Ç¡¢¤¤¤º¤ì¤Î¥ì¥³¡¼¥É¤Î°ìÉôʬ¤Ë¤â¤Ê¤é¤Ê¤¤¡£

RS¤¬Ã±°ì¤Î¥­¥ã¥é¥¯¥¿¤Ç¤¢¤Ã¤¿¤È¤­¡¢ RT¤Ï¤½¤ì¤ÈƱ¤¸¥­¥ã¥é¥¯¥¿°ìʸ»ú¤Ë¤Ê¤ë¡£ ¤·¤«¤·¡¢RS¤¬Àµµ¬É½¸½¤Ç¤¢¤ë¤È¤­¡¢RT¤Ï¤â¤Ã¤ÈÊØÍø¤Ë¤Ê¤ë¡£ ¤Ä¤Þ¤ê¡¢¼ÂºÝ¤ËÀµµ¬É½¸½¤Ë¥Þ¥Ã¥Á¤·¤¿ÆþÎϥƥ­¥¹¥È¤¬³ÊǼ¤µ¤ì¤ë¤Î¤Ç¤¢¤ë¡£

¼¡¤Ëµó¤²¤ëÎã¤Ï¤³¤ì¤é¤Îµ¡Ç½¤òξÊý¤È¤âÀâÌÀ¤·¤Æ¤¤¤ë¡£RS¤Ï²þ¹Ô¤Ë¤â¡¢ (Á°¸å¤ËϢ³¤·¤¿¶õÇò¤¬ÉÕ¤¤¤Æ¤â¤è¤¤)°ì¤Ä°Ê¾å¤ÎϢ³¤·¤¿Âçʸ»ú¤Ë¤â¥Þ¥Ã¥Á¤¹¤ë Àµµ¬É½¸½¤¬¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë:

 
$ echo record 1 AAAA record 2 BBBB record 3 |
> gawk 'BEGIN { RS = "\n|( *[[:upper:]]+ *)" }
>             { print "Record =", $0, "and RT =", RT }'
-| Record = record 1 and RT =  AAAA
-| Record = record 2 and RT =  BBBB
-| Record = record 3 and RT =
-|
   

of RS as a regexp and RT. ½ÐÎϤκǸå¤Î¹Ô¤Ï;·×¤Ê¶õÇò¹Ô¤¬¤¢¤ë¡£¤³¤ì¤Ï¡¢RT¤ÎÃͤ¬²þ¹Ô¤Ç¡¢ ¤µ¤é¤Ëprintʸ¤¬²þ¹Ô¤òºÇ¸å¤Ë¤Ä¤±¤Æ¤¤¤ë¤«¤é¤Ç¤¢¤ë¡£ Àµµ¬É½¸½¤È¤·¤Æ¤ÎRS¤ÈRT¤ÎÊØÍø¤ÊÎã¤Ï See section ñ½ã¤Ê¥¹¥È¥ê¡¼¥à¥¨¥Ç¥£¥¿.

RS¤Ë¡¢`RS = "abc(XYZ)?"'¤Î¤è¤¦¤Ê¾Êά²Äǽ¤Ê ËöÈø¤ò»ý¤ÄÀµµ¬É½¸½¤ò¥»¥Ã¥È¤·¤¿¾ì¹ç¡¢¤³¤ì¤Ï²Äǽ¤Ç¤¢¤ë¤±¤ì¤É¤â ¼ÂÁõ¾å¤ÎÀ©¸Â¤Ë¤è¤ê¡¢gawk¤ÏÀµµ¬É½¸½¤ÎÀè¹Ô¤¹¤ëÉôʬ¤Ë ¥Þ¥Ã¥Á¤·¤ÆËöÈøÉôʬ¤ò̵»ë¤·¤Æ¤·¤Þ¤¦¡£ÆÃ¤ËÆþÎϥƥ­¥¹¥È¤¬ Ť¤¾ì¹ç¡£gawk¤Ï¤³¤Î¤è¤¦¤ÊÌäÂê¤òÈò¤±¤è¤¦¤ÈÅØÎϤ¹¤ë¤±¤ì¤É¤â¡¢ ÀäÂФˤ³¤Î¤è¤¦¤Ê»öÂ֤ˤʤé¤Ê¤¤¤È¤Ï¤¤¤¨¤Ê¤¤¤Î¤Ç¤¢¤ë¡£

NOTE: awk¤Ç¤Ï¡¢`^'¤ä`$'¤È¤¤¤Ã¤¿¥¢¥ó¥«¡¼¥á¥¿¥­¥ã¥é¥¯¥¿¡¼¤Ï ¤½¤ì¤¾¤ìʸ»úÎó¤Î»Ïü¤È½ªÃ¼¤Ë¥Þ¥Ã¥Á¤·¡¢¹Ô¤Î »Ïü¤È½ªÃ¼¤Ë¥Þ¥Ã¥Á¤¹¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£·ë²Ì¤È¤·¤Æ¡¢`RS = "^[[:upper:]]"' ¤Î¤è¤¦¤ÊÀµµ¬É½¸½¤Ï¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤Ë¤Î¤ß¥Þ¥Ã¥Á¤¹¤ë¡£ ¤³¤ì¤Ïgawk¤¬ÆþÎÏ¥Õ¥¡¥¤¥ë¤ò°ì¤Ä¤ÎŤ¤Ê¸»úÎó¤È¤·¤Æ¤ß¤Æ¤¤¤ë¤¿¤á¤Ç ñ¤Ë¤½¤ÎÃæ¤Ë²þ¹Ô¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¤¤¤¦¤À¤±¤Î¤³¤È¤Ç¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤ÆRS¤ÎÃͤȤ·¤Æ¥¢¥ó¥«¡¼¥­¥ã¥é¥¯¥¿¡¼¤ò»È¤ï¤Ê¤¤¤³¤È¤¬ °ìÈ֤Ǥ¢¤ë¡£

RS¤òÀµµ¬É½¸½¤È¤·¤Æ»È¤Ã¤¿¤ê¤¹¤ë¤³¤È¤ä¡¢RTÊÑ¿ô¤Ï gawk¤Î³ÈÄ¥¤Ç¤¢¤ë¡£¤³¤ì¤é¤Ï¸ß´¹¥â¡¼¥É(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¤Ç »È¤¦¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£ ¸ß´¹¥â¡¼¥É¤Ç¤Ï¡¢RS¤ÎÀèÆ¬¤Î¥­¥ã¥é¥¯¥¿¡¼¤À¤±¤¬ ¥ì¥³¡¼¥É¤Î½ªÃ¼¤ò·è¤á¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£

Advanced Notes: RS = "\0" Is Not Portable

¥Ç¡¼¥¿¥Õ¥¡¥¤¥ëÁ´ÂΤò°ì¤Ä¤Î¥ì¥³¡¼¥É¤È¤·¤Æ°·¤¤¤¿¤¤¤È¤­¤¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ¤³¤ì¤ò¹Ô¤¦¤¿¤À°ì¤Ä¤ÎÊýË¡¤Ï¡¢RS¤ËÆþÎÏ¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë·è¤·¤Æ¸½¤ì¤Ê¤¤ ÃͤòÀßÄꤹ¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£¤³¤ì¤Ï Ǥ°Õ¤ÎÆþÎÏ¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¾ï¤Ëưºî¤¹¤ë¥×¥í¥°¥é¥à¤Î¤è¤¦¤Ê °ìÈÌŪ¤Ê¤â¤Î¤Ë¤ÏÆñ¤·¤¤ÊýË¡¤Ç¤¢¤ë¡£

¤¢¤Ê¤¿¤Ï¤³¤Î¾ì¹ç¤Ë¡¢¥Æ¥­¥¹¥È¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¤Ï¡¢Á´¤Æ¤Î¥Ó¥Ã¥È¤¬¥¼¥í¤Î¥­¥ã¥é¥¯¥¿¡¼¤Ç¤¢¤ë NUL¥­¥ã¥é¥¯¥¿¡¼¤òRS¤ËÂФ·¤Æ»È¤¦¤³¤È¤¬Îɤ¤¤È¹Í¤¨¤ë¤«¤â¤·¤ì¤Ê¤¤:

 
BEGIN { RS = "\0" }  # ¥Õ¥¡¥¤¥ëÁ´ÂΤ¬°ì¤Ä¤Î¥ì¥³¡¼¥É¤Ë¤Ê¤ë?
   

gawk¤Ï¼ÂºÝ¤Ë¤³¤ì¤ò¼õ¤±ÉÕ¤±¡¢NUL¥­¥ã¥é¥¯¥¿¡¼¤ò ¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¡¼¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢ ¤³¤Î¤è¤¦¤Ê»È¤¤Êý¤Ï¾¤Î¼ÂÁõ¤Îawk¤ËÂФ·¤Æ¥Ý¡¼¥¿¥Ö¥ë¤Ê¤â¤Î¤Ç¤Ï¤Ê¤¤¡£

¾¤ÎÁ´¤Æ¤Îawk¤Î¼ÂÁõ(16)¤Ïʸ»úÎó¤òÆâÉôŪ¤Ë¤ÏC·Á¼°¤Îʸ»úÎó¤È¤·¤Æ³ÊǼ¤·¤Æ¤¤¤ë¡£ C·Á¼°¤Îʸ»úÎó¤ÏNUL¥­¥ã¥é¥¯¥¿¡¼¤òʸ»úÎó¤Î½ªÃ¼¤È¤·¤Æ»ÈÍѤ·¤Æ¤¤¤ë¡£ ¤³¤Î¤¿¤á¡¢`RS = "\0"' ¤Ï `RS = ""'¤ÈÅù²Á¤È¤Ê¤ë¡£ (d.c.)

¥Õ¥¡¥¤¥ëÁ´ÂΤò°ì¤Ä¤Î¥ì¥³¡¼¥É¤È¤·¤Æ°·¤¦ºÇ¤âÎɤ¤¤ä¤êÊý¤Ï¡¢ ñ½ã¤Ë¥Õ¥¡¥¤¥ë¤ò°ìÅ٤˰ì¥ì¥³¡¼¥ÉÆÉ¤ß¡¢³Æ¥ì¥³¡¼¥É¤ò ¤Ò¤È¤ÄÁ°¤Î½ªÃ¼¤Ë¤Ä¤Ê¤²¤Æ¤·¤Þ¤¦¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.2 ¥Õ¥£¡¼¥ë¥É¤ò¸¡ºº¤¹¤ë

awk¤¬ÆþÎϥ쥳¡¼¥É¤òÆÉ¤ß¹þ¤ó¤À¤È¤­¡¢ ¤½¤Î¥ì¥³¡¼¥É¤Ï¼«Æ°Åª¤Ë¥¤¥ó¥¿¡¼¥×¥ê¥¿¤Ë¤è¤Ã¤Æ²òÀϤµ¤ì¡¢ ¥Õ¥£¡¼¥ë¥É¤È¸Æ¤Ð¤ì¤ë²ô¤Ëʬ³ä¤µ¤ì¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥Õ¥£¡¼¥ë¥É¤Îʬ³ä¤Ï¹Ô¤ÎÃæ¤Ë¤¢¤ëñ¸ì¤Î¤è¤¦¤Ë¡¢ ¶õÇò(whitespace)¤Ë¤è¤Ã¤Æ¹Ô¤ï¤ì¤ë¡£ awk¤Ç¤Î¶õÇò¤Ï¡¢¥¹¥Ú¡¼¥¹¤«¥¿¥Ö¡¢¤¢¤ë¤¤¤Ï²þ¹Ô¤Î°ì¤Ä°Ê¾å¤ÎÏ¢¤Ê¤ê¤Ç¤¢¤ë (17)¡£ ¤Û¤«¤Î¸À¸ì¤Ç¤Ï¶õÇò¤È¤ß¤Ê¤µ¤ì¤ë¤è¤¦¤Ê¥Õ¥©¡¼¥à¥Õ¥£¡¼¥É¤ä¿âľ¥¿¥Ö¤Ê¤É¤Î¥­¥ã¥é¥¯¥¿¤Ï¡¢ awk¤Î¾ì¹ç¤Ï¶õÇò¤È¤·¤Æ¤Ï¤ß¤Ê¤µ¤ì¤Ê¤¤¡£

¥Õ¥£¡¼¥ë¥É¤ÎÌÜŪ¤Ï¡¢¥ì¥³¡¼¥É¤Î¤³¤¦¤¤¤Ã¤¿²ô¤ò»²¾È¤¹¤ë¤Î¤ËÊØÍø¤Ê¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¢¤ê¡¢ ¥Õ¥£¡¼¥ë¥É¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¤¤¤¦¤â¤Î¤Ç¤Ï¤Ê¤¤¡£ ˾¤à¤Ê¤é¥ì¥³¡¼¥ÉÁ´ÂΤò½èÍý¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£ ¤·¤«¤·¡¢¥Õ¥£¡¼¥ë¥É¤Ï¥Ñ¥ï¥Õ¥ë¤Êawk¥×¥í¥°¥é¥à¤ò´Êñ¤Ë¤¹¤ë¤Î¤Ç¤¢¤ë¡£

awk¥×¥í¥°¥é¥àÃæ¤Ç¥Õ¥£¡¼¥ë¥É¤ò»²¾È¤¹¤ë¤Ë¤Ï¡¢¥É¥ëµ­¹æ(`$')¤Ë ³¤±¤Æ»²¾È¤·¤¿¤¤¥Õ¥£¡¼¥ë¥É¤ÎÈÖ¹æ¤ò³¤±¤ë¤³¤È¤Ë¤è¤Ã¤Æ¤ª¤³¤Ê¤¦¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢$1¤ÏºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤ò¡¢$2¤ÏÆóÈÖÌܤΥե£¡¼¥ë¥É¤ò»²¾È¤¹¤ë (Unix¤Î¥·¥§¥ë¤È¤Ï°Û¤Ê¤ê¡¢¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤Ï°ì·å¤Ë¸Â¤é¤Ê¤¤¡£$127¤Ï ¥ì¥³¡¼¥É¤Î127ÈÖÌܤΥե£¡¼¥ë¥É¤Ç¤¢¤ë)¡£ Î㤨¤Ð¼¡¤Î¤è¤¦¤Ê¹Ô¤¬ÆþÎϤµ¤ì¤¿¤È¤¹¤ë¤È¡¢

 
This seems like a pretty nice example.
   

¤³¤ÎÎã¤Î¾ì¹ç¡¢ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤Ç¤¢¤ë$1¤ÎÆâÍÆ¤Ï`This'¤Ç¤¢¤ë¡£ ÆóÈÖÌܤΥե£¡¼¥ë¥É¡¢$2¤ÎÆâÍÆ¤Ï`seems'¤È¤¤¤¦¤è¤¦¤Ë¤Ê¤ë¡£ ºÇ¸å¤Î¥Õ¥£¡¼¥ë¥É$7¤¬`example.'¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤·¤ÆÍߤ·¤¤¡£ ¤³¤ì¤Ï¡¢`e' ¤È `.' ¤Î´Ö¤Ë¥¹¥Ú¡¼¥¹¤¬¤Ê¤¤¤¿¤á¤Ç¡¢ ¥Ô¥ê¥ª¥É¤Ï¼·ÈÖÌܤΥե£¡¼¥ë¥É¤Î°ìÉô¤Ç¤¢¤ë¤È¤ß¤Ê¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¤¢¤ë¡£

NF¤Ï¥«¥ì¥ó¥È¥ì¥³¡¼¥É¤Ë¤¢¤ë¥Õ¥£¡¼¥ë¥É¤Î¿ô¤òÊÝ»ý¤¹¤ëÁȤ߹þ¤ßÊÑ¿ô¤Ç¤¢¤ë¡£ awk¤Ï¥ì¥³¡¼¥É¤ÎÆÉ¤ß¹þ¤ß¤Î¤¿¤Ó¤ËNF¤ÎÃͤò¼«Æ°Åª¤Ë¹¹¿·¤¹¤ë¡£ ¥Õ¥£¡¼¥ë¥É¤¬´ö¤Ä¤¢¤ë¤«¤Ë¤«¤«¤ï¤é¤º¡¢ ¤¢¤ë¥ì¥³¡¼¥É¤ÎºÇ¸å¤Î¥Õ¥£¡¼¥ë¥É¤Ï $NF¤Çɽ¤ï¤¹¤³¤È¤¬¤Ç¤­¤ë¡£ ¤À¤«¤éÀèÄø¤ÎÎã¤Ç¤¤¤¦¤È¡¢$NF¤Ï $7¤ÈƱ¤¸¤³¤È¤Ç¤¢¤ê¡¢ ÆâÍÆ¤Ï `example.' ¤Ë¤Ê¤ë¡£ ¥ì¥³¡¼¥ÉÃæ¤Ë¥Õ¥£¡¼¥ë¥É¤¬¼·¸Ä¤·¤«¤Ê¤¤¤È¤­¤Ë $8¤Î¤è¤¦¤ËºÇ¸å¤ÎÍ×ÁǤò±Û¤¨¤Æ»²¾È¤·¤è¤¦¤È¤·¤¿¤È¤­¤Ë¤Ï¡¢¶õ¤Îʸ»úÎó¤¬Ê֤äƤ¯¤ë (¿ôÃÍ¥ª¥Ú¥ì¡¼¥·¥ç¥ó¤Ç»ÈÍѤ·¤¿¾ì¹ç¤Ë¤Ï¥¼¥í¤¬ÆÀ¤é¤ì¤ë)¡£

$0¤Ï"0ÈÖÌÜ"¤Î¥Õ¥£¡¼¥ë¥É¤ò»²¾È¤¹¤ë¤è¤¦¤Ë¸«¤¨¤ë¤¬¡¢ ¤³¤ì¤ÏÆÃÊ̤ʥ±¡¼¥¹¤ÇÆþÎϥ쥳¡¼¥ÉÁ´ÂΤòɽ¤ï¤¹¡£ $0¤Ï¥Õ¥£¡¼¥ë¥É¤òµ¤¤Ë¤·¤¿¤¯¤Ê¤¤¤È¤­¤Ë»ÈÍѤ¹¤ë¡£ ¤µ¤é¤Ë´ö¤Ä¤«¤ÎÎã¤òµó¤²¤è¤¦:

 
$ awk '$1 ~ /foo/ { print $0 }' BBS-list
-| fooey        555-1234     2400/1200/300     B
-| foot         555-6699     1200/300          B
-| macfoo       555-6480     1200/300          A
-| sabafoo      555-2127     1200/300          C
   

¤³¤ÎÎã¤Ç¤Ï¡¢`BBS-list' ¤È¤¤¤¦¥Õ¥¡¥¤¥ëÃæ¤Î¥ì¥³¡¼¥É¤Ç¡¢ ¥ì¥³¡¼¥É¤ÎÂè°ì¥Õ¥£¡¼¥ë¥É¤Ë `foo'¤È¤¤¤¦Ê¸»úÎó¤ò´Þ¤ó¤Ç¤¤¤ë¤â¤Î¤ò½ÐÎϤ·¤Æ¤¤¤ë¡£ `~'¤È¤¤¤¦±é»»»Ò¤Ï¥Þ¥Ã¥Á¥ó¥°±é»»»Ò(matching operator) (see section Àµµ¬É½¸½¤Î»È¤¤Êý)¤È¸Æ¤Ð¤ì¡¢ ¤¢¤ëʸ»úÎó(¤³¤³¤Ç¤Ï¥Õ¥£¡¼¥ë¥É$1)¤ÈÍ¿¤¨¤é¤ì¤¿Àµµ¬É½¸½¤È¤¬¥Þ¥Ã¥Á¤¹¤ë¤«¤ò¸¡ºº¤¹¤ë¡£

°ìÊý¼¡¤ÎÎã¤Ï¡¢¥ì¥³¡¼¥ÉÁ´ÂΤ«¤é`foo'¤òõ¤·¤Æ¡¢ ¤½¤ì¤¬¸«¤Ä¤«¤Ã¤¿ÆþÎϥ쥳¡¼¥É¤ÎÂè°ì¥Õ¥£¡¼¥ë¥É¤ÈºÇ½ª¥Õ¥£¡¼¥ë¥É¤ò½ÐÎϤ¹¤ë:

 
$ awk '/foo/ { print $1, $NF }' BBS-list
-| fooey B
-| foot B
-| macfoo A
-| sabafoo C
   

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.3 Äê¿ô¤Ç¤Ê¤¤¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ

¥Õ¥£¡¼¥ë¥É¤ÎÈÖ¹æ¤ÏÄê¿ô¤Ç¤¢¤ëɬÍפϤʤ¤¡£¤¢¤ë¥Õ¥£¡¼¥ë¥É¤ò»²¾È¤¹¤ë¤¿¤á¤Ë¡¢ awk¸À¸ì¤Ç¤ÎǤ°Õ¤Î¼°¤ò`$'¤Î¸å¤Ç»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤Î¼°¤ÎÃͤϥե£¡¼¥ë¥ÉÈÖ¹æ¤È¤·¤Æ°·¤ï¤ì¤ë¡£ ¤³¤Î¤È¤­¼°¤¬¿ôÃͤǤϤʤ¯Ê¸»úÎó¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢ ¤½¤Î¼°¤ÎÃͤϿôÃͤؤÈÊÑ´¹¤µ¤ì¤ë¡£Îã¤òµó¤²¤è¤¦:

 
awk '{ print $NR }'
   

NR¤Ï¤½¤ì¤Þ¤Ç¤ËÆÉ¤ß¹þ¤ó¤À¥ì¥³¡¼¥É¤Î¿ô¤À¤È¤¤¤¦¤³¤È¤ò»×¤¤½Ð¤½¤¦¡£ °ìÈÖÌܤΥ쥳¡¼¥É¤Ç¤Ï1¡¢ÆóÈÖÌܤǤÏ2¡Ä¤È¤¤¤¦¤è¤¦¤Ë¤Ê¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¤³¤ÎÎã¤Ï¡¢°ìÈÖÌܤΥ쥳¡¼¥É¤Î°ìÈÖÌܤΥե£¡¼¥ë¥É¡¢ ÆóÈÖÌܤΥ쥳¡¼¥É¤ÎÆóÈÖÌܤΥե£¡¼¥ë¡Ä¤È½ÐÎϤ·¤Æ¤¤¤¯¡£ Æó½½ÈÖÌܤΥ쥳¡¼¥É¤Ç¤ÏÆó½½ÈÖÌܤΥե£¡¼¥ë¥É¤¬½ÐÎϤµ¤ì¤ë¤³¤È¤Ë¤Ê¤ë¤¬¡¢ ¤Û¤È¤ó¤É¤Î¾ì¹ç¤Ï¥ì¥³¡¼¥É¤Ë¤Ï20̤Ëþ¤Î¥Õ¥£¡¼¥ë¥É¤·¤«¤Ê¤¤¤«¤é¡¢¶õÇò¹Ô¤¬½ÐÎϤµ¤ì¤ë¤À¤í¤¦¡£ ¤â¤¦°ì¤Ä¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤È¤·¤Æ¼°¤ò»È¤Ã¤¿Îã¤òµó¤²¤ë:

 
awk '{ print $(2*2) }' BBS-list
   

awk ¤Ï`(2*2)'¤È¤¤¤¦¼°¤òɾ²Á¤·¡¢ ¤½¤ì¤«¤é¤½¤ÎÃͤò½ÐÎϤ¹¤Ù¤­¥Õ¥£¡¼¥ë¥É¤ÎÈÖ¹æ¤È¤·¤Æ»ÈÍѤ¹¤ë¡£ `*'¤Ï¾è»»¤òɽ¤¹¤Î¤Ç¡¢`2*2' ¤È¤¤¤¦¼°¤òɾ²Á¤¹¤ë¤È4¤È¤Ê¤ë¡£ ³ç¸Ì¤Ï`$'¤Î¥ª¥Ú¥ì¡¼¥·¥ç¥ó¤è¤êÀè¤Ë³Ý¤±»»¤ò¹Ô¤ï¤»¤ë¤¿¤á¤Ç¤¢¤ë¡£ ¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤ò»ØÄꤹ¤ë¼°¤ÇÆó¹à±é»»»Ò¤ò»È¤¦¤È¤­¤Ï¾ï¤Ë¤³¤Î¤è¤¦¤Ë¤¹¤ëɬÍפ¬¤¢¤ë¡£ ¤³¤ÎÎã¤Ç¤Ï`BBS-list'¤È¤¤¤¦¥Õ¥¡¥¤¥ëÃæ¤ÎÁ´¤Æ¤Î¹Ô¤Î¡¢ ±¿±Ä»þ´Ö(4ÈÖÌܤΥե£¡¼¥ë¥É)¤ò½ÐÎϤ¹¤ë (awk¤Ç»È¤¨¤ë±é»»»Ò¤ÎÁ´¤Æ¤Ï ±é»»»Ò¤ÎÍ¥Àè½ç°Ì (How Operators Nest) ¤Ë°ìÍ÷¤¬¤¢¤ë)¡£

¥Õ¥£¡¼¥ë¥ÉÈֹ椬0¤Ë¤Ê¤ë¤è¤¦¤Ê¼°¤òÍ¿¤¨¤ë¤È¡¢¤½¤Î·ë²Ì¤Ï¥ì¥³¡¼¥ÉÁ´ÂΤȤʤ롣 ¤À¤«¤é¡¢ `$(2-2)'¤ÎÃͤÏ$0¤ÈƱ¤¸¤Ç¤¢¤ë¡£ Éé¤Î¿ô¤Ë¤è¤ë¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤Î»ØÄê¤Ïµö¤µ¤ì¤ª¤é¤º¡¢ ¤â¤·¤½¤¦¤¤¤Ã¤¿¥Õ¥£¡¼¥ë¥É¤ò»²¾È¤·¤è¤¦¤È¤¹¤ë¤È¡¢ Ä̾ï¤Ïawk¥×¥í¥°¥é¥à¤Î¼Â¹Ô¤¬ÃæÃǤµ¤ì¤ë (POSIX¤Îɸ½à¤Ç¤Ï¡¢Éé¤Î¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤ò»²¾È¤·¤¿¤È¤­¤Îưºî¤ÏÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ gawk¤Ç¤Ï¤³¤ì¤òÄÌÃΤ·¤Æ¡¢¥×¥í¥°¥é¥à¤ò½ªÎ»¤¹¤ë¡£ ¾¤Îawk½èÍý·Ï¤Ç¤Ï°ã¤Ã¤¿Æ°ºî¤ò¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤)¡£

¥Õ¥£¡¼¥ë¥É¤ò¸¡ºº¤¹¤ë¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë¤è¤¦¤Ë¡¢ ¥«¥ì¥ó¥È¥ì¥³¡¼¥É¤Î¥Õ¥£¡¼¥ë¥É¿ô¤ÏÁȹþ¤ßÊÑ¿ô¤Î NF (see section ÁȤ߹þ¤ßÊÑ¿ô)¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë¡£ $NF¤È¤¤¤¦¼°¤ÏÆÃÊ̤ʵ¡Ç½¤Ç¤Ï¤Ê¤¯¡¢NF¤òɾ²Á¤·¤Æ¡¢ ¤½¤ÎÃͤò¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤È¤·¤Æ»È¤Ã¤¿·ë²Ì¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.4 ¥Õ¥£¡¼¥ë¥É¤ÎÆâÍÆ¤òÊѹ¹¤¹¤ë

awk¥×¥í¥°¥é¥à¤ÎÃæ¤Ç¥Õ¥£¡¼¥ë¥É¤Î¹½À®¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢ ¤½¤ì¤Ë¤è¤Ã¤Æawk¤Ï¥«¥ì¥ó¥ÈÆþÎϥ쥳¡¼¥É¤¬Êѹ¹¤µ¤ì¤¿¤Èǧ¼±¤¹¤ë (¼ÂºÝ¤ÎÆþÎϤˤϱƶÁ¤Ê¤¤¡£awk¤Ï·è¤·¤ÆÆþÎÏ¥Õ¥¡¥¤¥ë¤òÊѹ¹¤·¤Ê¤¤)¡£ °Ê²¼¤Î¥×¥í¥°¥é¥à¤Î½ÐÎϤò¹Í¤¨¤Æ¤ß¤è¤¦:

 
$ awk '{ nboxes = $3 ; $3 = $3 - 10
>        print nboxes, $3 }' inventory-shipped
-| 25 15
-| 32 22
-| 24 14
…
   

¤³¤Î¥×¥í¥°¥é¥à¤ÏºÇ½é¤ËÊÑ¿ônboxes¤Ë»°ÈÖÌܤΥե£¡¼¥ë¥É¤Î¸µ¤ÎÃͤò Êݸ¤·¤Æ¤¤¤ë¡£`-'µ­¹æ¤Ï¸º»»¤Îµ­¹æ¤Ç¤¢¤ë¤Î¤Ç¡¢ ¤³¤Î¥×¥í¥°¥é¥à¤Ï»°ÈÖÌܤΥե£¡¼¥ë¥É$3¤Ë`$2 - 10'¡¢ ¤Ä¤Þ¤êÆóÈÖÌܤΥե£¡¼¥ë¥É¤ÎÃͤ«¤é10¤ò°ú¤¤¤¿Ãͤò¥»¥Ã¥È¤¹¤ë (See section ¿ô³ØÅª±é»»»Ò.)¡£ ¤½¤ì¤«¤éÆóÈÖÌܤΥե£¡¼¥ë¥É¤È¿·¤·¤¤»°ÈÖÌܤΥե£¡¼¥ë¥É¤¬½ÐÎϤµ¤ì¤ë (Someone in the warehouse made a consistent mistake while inventorying the red boxes.)¡£

¤³¤ì¤¬¤­¤Á¤ó¤Èưºî¤¹¤ë¤Ë¤Ï¡¢ ¥Õ¥£¡¼¥ë¥É$2¤Î¥Æ¥­¥¹¥È¤Ï¿ô¤È¤·¤Æ°ÕÌ£¤Î¤¢¤ë¤â¤Î¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ (¥Õ¥£¡¼¥ë¥É¤Î)ʸ»úÎó¤Ï»»½Ñ±é»»¤ò¹Ô¤¦¤¿¤á¤Ë¿ôÃͤËÊÑ´¹¤µ¤ì¤ë¡£ °ú¤­»»¤Î·ë²Ì(¤Î¿ôÃÍ)¤ÏºÆÅÙʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤Æ¡¢Âè»°¥Õ¥£¡¼¥ë¥É¤Ë¤Ê¤ë¡£ See section ʸ»úÎó¤È¿ôÃͤÎÊÑ´¹.

¤¢¤ë¥Õ¥£¡¼¥ë¥É¤ÎÃͤòÊѹ¹¤·¤¿(awk¤¬¤½¤¦Ç§¼±¤·¤¿)¤È¤­¡¢ ÆþÎϥ쥳¡¼¥É¤Î¥Æ¥­¥¹¥È¤Ï¿·¤·¤¤¥Õ¥£¡¼¥ë¥É¤¬¸Å¤¤¥Õ¥£¡¼¥ë¥É¤Î¤È¤³¤í¤Ë ¤¢¤ë¤è¤¦¤ËºÆ±é»»¤¬¹Ô¤ï¤ì¤ë¡£¤½¤Î¤¿¤á¡¢ $0¤¬¥Õ¥£¡¼¥ë¥É¤ÎÊѹ¹¤òÈ¿±Ç¤·¤ÆÊѲ½¤¹¤ë¤Î¤Ç¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¼¡¤Î¥×¥í¥°¥é¥à¤Ï¡¢ÆþÎÏ¥Õ¥¡¥¤¥ë¤Î¥Ç¡¼¥¿¤Î³Æ¹Ô¤ÎÂèÆó¥Õ¥£¡¼¥ë¥É¤¬ ÆþÎÏ¥Õ¥¡¥¤¥ë¤Ë¤¢¤Ã¤¿¤â¤Î¤«¤é10¤ò°ú¤¤¤¿¤â¤Î¤ËÃÖ¤­´¹¤¨¤é¤ì¤¿ ·ë²Ì¤ò½ÐÎϤ¹¤ë¤Î¤Ç¤¢¤ë:

 
$ awk '{ $2 = $2 - 10; print $0 }' inventory-shipped
-| Jan 3 25 15 115
-| Feb 5 32 24 226
-| Mar 5 24 34 228
…
   

ºÇÂç¤Î¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤è¤êÂ礭¤¤¡¢Â¸ºß¤·¤Ê¤¤¥Õ¥£¡¼¥ë¥É¤ËÂФ¹¤ëÂåÆþ¤â²Äǽ¤Ç¤¢¤ë¡£ Îã¤òµó¤²¤è¤¦

 
$ awk '{ $6 = ($5 + $4 + $3 + $2)
>        print $6 }' inventory-shipped
-| 168
-| 297
-| 301
…
   

¤³¤³¤Ç¤Ï$6¤¬¿·¤¿¤Ëºî¤ê½Ð¤µ¤ì¤Æ¡¢ $2, $3, $4, $5¤Î³Æ¥Õ¥£¡¼¥ë¥É¤Î¹ç·×¤¬³ÊǼ¤µ¤ì¤ë¡£ `+'¤Ï­¤·»»¤Îµ­¹æ¤Ç¤¢¤ë¡£ `inventory-shipped'¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ³Æ·î¤´¤È¤ÎÀѹþÎ̤ιç·×¤ò $6¤ËÀßÄꤹ¤ë¡£

¿·¤·¤¤¥Õ¥£¡¼¥ë¥É¤òºîÀ®¤¹¤ë¤È¡¢awkÆâÉô¤Ë¤¢¤ë ¥«¥ì¥ó¥È¥ì¥³¡¼¥É¤Î¥³¥Ô¡¼¤¬Êѹ¹¤µ¤ì¤ë¡£¤·¤¿¤¬¤Ã¤Æ¡¢ ¥Õ¥£¡¼¥ë¥É¤òÉÕ¤±²Ã¤¨¤¿¸å¤Ç`print $0'¤ò½ÐÎϤ¹¤ë¤È ¤½¤Î·ë²Ì¤Ë¤Ï °ÊÁ°¤«¤é¸ºß¤·¤Æ¤¤¤¿¥Õ¥£¡¼¥ë¥É¤È¿·¤¿¤Ê¥Õ¥£¡¼¥ë¥É¤È¤Î´Ö¤Ë ŬÀڤʿô¤Î¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¡¢ ¿·¤·¤¤¥Õ¥£¡¼¥ë¥É¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¡£

¤³¤ÎºÆ·×»»¤Î¸ú²Ì¤ÈºÆ·×»»¤ò¹Ô¤¦µ¡Ç½¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤Ï¤Þ¤À¤µ¤ì¤Æ¤¤¤Ê¤¤¡£ ¥Õ¥£¡¼¥ë¥É¤Î¶èÀÚ¤ê¤ò»ØÄꤹ¤ë½ÐÎÏ¥Õ¥£¡¼¥ë¥É»ØÄê»ÒOFS¤ä NF (¥Õ¥£¡¼¥ë¥É¤Î¿ô¡£see section ¥Õ¥£¡¼¥ë¥É¤ò¸¡ºº¤¹¤ë¡Ë¤Ë¤Ä¤¤¤Æ¤ÎÀâÌÀ¤â¤Þ¤À¤Ç¤¢¤ë¡£ Î㤨¤Ð¡¢NF¤ÎÃͤϿ·¤¿¤Ëºî¤ê½Ð¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Î ¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤ÎºÇÂç¤Î¤â¤Î¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£ $0¤ÎÀµ³Î¤Ê¥Õ¥©¡¼¥Þ¥Ã¥È¤â¤Þ¤¿¤Þ¤ÀÀâÌÀ¤·¤Æ¤¤¤Ê¤¤µ¡Ç½ -- ½ÐÎÏ¥Õ¥¡¥¤¥ë¥»¥Ñ¥ì¡¼¥¿(OFS)¤¬ ¥Õ¥£¡¼¥ë¥É¤ò¶èÀÚ¤ë¤â¤Î¤È¤·¤Æ»È¤ï¤ì¤ë(see section ½ÐÎÏ¥»¥Ñ¥ì¡¼¥¿) -- ¤Ë±Æ¶Á¤ò¼õ¤±¤Æ¤¤¤ë¡£

¤·¤«¤·µ¤¤ò¤Ä¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤Î¤Ï¡¢Èϰϳ°¤Î¥Õ¥£¡¼¥ë¥É¤ËÂФ¹¤ë»²¾È¤Ï $0¤ÎÃͤâNF¤ÎÃͤâÊѹ¹¤·¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ Èϰϳ°¤Î¥Õ¥£¡¼¥ë¥É¤ËÂФ¹¤ë»²¾È¤Ïñ¤Ë¶õʸ»úÎó¤òÀ¸À®¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£Îã¤òµó¤²¤è¤¦:

 
if ($(NF+1) != "")
    print "can't happen"
else
    print "everything is normal"
   

¤³¤ì¤Ï`everything is normal'¤¬½ÐÎϤµ¤ì¤ë¤Ï¤º¤À¡£ ¤Ê¤¼¤Ê¤é¡¢NF+1¤ÏÈϰϤγ°¤Ë¤¢¤ë¤«¤é¤Ç¤¢¤ë (awk¤Îif-elseʸ¤Ë¤Ä¤¤¤Æ¤Î¾Ü¤·¤¤¾ðÊó¤Ï See section if-else ʸ¡¢ `!='±é»»»Ò¤Ë´Ø¤¹¤ë¾Ü¤·¤¤¾ðÊó¤Ï See section ÊÑ¿ô¤Î·¿ÉÕ¤±¤ÈÈæ³Ó¼°.)¡£

´û¤Ë¸ºß¤¹¤ë¥Õ¥£¡¼¥ë¥É¤Ë²¿¤«¤òÂåÆþ¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ $0¤ÎÃͤÏÊѲ½¤¹¤ë¤¬¤¿¤È¤¨¥Õ¥£¡¼¥ë¥É¤Ë¶õʸ»úÎó¤òÂåÆþ¤·¤¿¤È¤·¤Æ¤â NF¤ÎÃͤÏÊѲ½¤·¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ï½ÅÍפǤ¢¤ë¡£Î㤨¤Ð:

 
$ echo a b c d | awk '{ OFS = ":"; $2 = ""
>                       print $0; print NF }'
-| a::c:d
-| 4
   

¥Õ¥£¡¼¥ë¥É¤Ï¶õ¤ÎÃͤò»ý¤Ã¤ÆÂ¸ºß¤·¤Ä¤Å¤±¤Æ¤¤¤ë¡£ ¤½¤ì¤Ï`a'¤È`c'¤Î´Ö¤ËÆó¤Ä¤Î¥³¥í¥ó¤¬¤¢¤ë¤³¤È¤Ç ¼¨¤µ¤ì¤Æ¤¤¤ë¡£°Ê²¼¤ÎÎã¤Ï¿·¤¿¤Ê¥Õ¥£¡¼¥ë¥É¤òÀ¸À®¤·¤¿¤È¤­¤Ë µ¯¤³¤ë¤³¤È¤òÀâÌÀ¤·¤Æ¤¤¤ë:

 
$ echo a b c d | awk '{ OFS = ":"; $2 = ""; $6 = "new"
>                       print $0; print NF }'
-| a::c:d::new
-| 6
   

$5¤¬´Ö¤ËÆþ¤Ã¤Æ¶õ¤ÎÃͤǺîÀ®¤µ¤ì¤Æ¤¤¤Æ (Æó¤Ä¤á¤Îʤó¤À¥³¥í¥ó¤Ë¤è¤Ã¤ÆÈ½ÃǤǤ­¤ë)¡¢ NF¤ÎÃͤ¬6¤Ë¹¹¿·¤µ¤ì¤Æ¤¤¤ë¡£

NF¤ÎÃͤò¸º¤¸¤ë¤³¤È¤Ë¤è¤Ã¤Æ¿·¤¿¤ÊNF¤ÎÃͤè¤ê ¸å¤í¤Î¥Õ¥£¡¼¥ë¥É¤ÎÃͤϼº¤ï¤ì¤ë¤³¤È¤È¤Ê¤ê¡¢$0¤ÎºÆ·×»»¤¬¹Ô¤Ê¤ï¤ì¤ë¡£ (d.c.) °Ê²¼¤Ï¤½¤ÎÎã¤Ç¤¢¤ë:

 
$ echo a b c d e f | awk '{ print "NF =", NF;
>                            NF = 3; print $0 }'
-| NF = 6
-| a b c
   

·Ù¹ð: °ìÉô¤Î¥Ð¡¼¥¸¥ç¥ó¤Îawk¤Ï NF¤ò¸º¤¸¤¿¤È¤­¤Ë$0¤ÎºÆ¹½ÃÛ¤ò¹Ô¤ï¤Ê¤¤¡£ Caveat emptor¡£

·ë¶É¤Î¤È¤³¤í¡¢awk¤Ë¥ì¥³¡¼¥ÉÁ´ÂΤκƹ½ÃÛ¤ò¶¯À©¤·¤¿¤È¤­¤Ë¤Ï ¤½¤Î»þÅÀ¤Ç¤Î¥Õ¥£¡¼¥ë¥É¤ÎÃͤÈOFS¤¬»È¤ï¤ì¤ë¡£ ºÆ¹½ÃÛ¤ò¹Ô¤¦¤¿¤á¤Ë¤Ï¡¢²¿¤é¤«¤Î̵³²¤ÊÂåÆþ¤ò¹Ô¤¦:

 
$1 = $1   # force record to be reconstituted
print $0  # or whatever else with $0
   

¤³¤ì¤Ïawk¤Ë¥ì¥³¡¼¥É¤ÎºÆ¹½ÃÛ¤ò¶¯À©¤¹¤ë¡£ ¾åµ­¤ÎÎã¤Î¤è¤¦¤Ë¡¢¥³¥á¥ó¥È¤òÉղä·¤ÆÍý²ò¤Î½õ¤±¤Ë¤·¤Æ¤¤¤ë¡£

$0¤È¥Õ¥£¡¼¥ë¥É¤È¤Î´Ö¤Ë¤Ï´Ø·¸¤¬¤¢¤ë¡£$0¤ËÂФ¹¤ëÂåÆþ¤Ï FS¤Î¤½¤Î»þÅÀ¤Ç¤ÎÃͤò»È¤Ã¤¿ ¥ì¥³¡¼¥É¤«¤é¥Õ¥£¡¼¥ë¥É¤Ø¤ÎºÆ¹½ÃÛ¤ò°ú¤­µ¯¤³¤¹¡£ ¤³¤ì¤Ï¤Þ¤¿sub¤ägsub(see section ʸ»úÎóÁàºî´Ø¿ô)¤Î¤è¤¦¤Ê Ǥ°Õ¤ÎÁȤ߹þ¤ß´Ø¿ô¤ÎŬÍѤˤè¤ë$0¤Î¹¹¿·¤Ë¤âŬÍѤµ¤ì¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5 ¥Õ¥£¡¼¥ë¥É¤¬¤É¤Î¤è¤¦¤Ëʬ³ä¤µ¤ì¤ë¤«¤òÆÃÄꤹ¤ë

The field separator, which is either a single character or a regular expression, controls the way awk splits an input record into fields. awk scans the input record for character sequences that match the separator; the fields themselves are the text between the matches. ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤Ï¤¢¤ë°ìʸ»ú¤«¡¢¤¢¤ë¤¤¤ÏÀµµ¬É½¸½¤Ç¤¢¤ê¡¢ awk¤¬ÆþÎϥ쥳¡¼¥É¤ò¤É¤Î¤è¤¦¤Ë¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤¹¤ë¤«¤òÀ©¸æ¤¹¤ë¡£ awk¤ÏÆþÎϥ쥳¡¼¥ÉÃæ¤Ë¤½¤Î¥»¥Ñ¥ì¡¼¥¿¤Ë¥Þ¥Ã¥Á¤¹¤ë¥­¥ã¥é¥¯¥¿¤Î ʤӤ¬¤Ê¤¤¤«¸¡º÷¤¹¤ë¡£¥Õ¥£¡¼¥ë¥É¤½¤Î¤â¤Î¤Ï¥Þ¥Ã¥Á¤·¤¿¤â¤Î¤Î´Ö¤Ë¤¢¤ë¥Æ¥­¥¹¥È¤Ç¤¢¤ë

¼¡¤Ëµó¤²¤ëÎã¤Ç¤Ï¡¢½ÐÎÏÃæ¤Î¶õÇò¤òɽ¤¹¤Î¤Ëbullet symbol (•)¤ò »È¤Ã¤Æ¤¤¤ë¡£¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤¬`oo'¤Ç¤¢¤ë¤È¤­°Ê²¼¤Î ¹Ô¤¬Í¿¤¨¤é¤ì¤¿¤È¤¹¤ë¤È:

 
moo goo gai pan
   

»°¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤µ¤ì¤ë: `m', `•g', `•gai•pan'¡£ ÆóÈÖÌܤȻ°ÈÖÌܤΥե£¡¼¥ë¥É¤ÎÀèÆ¬¤Ë¶õÇò¤¬¤¢¤ë¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£

¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤ÏÁȹþ¤ßÊÑ¿ô¤ÎFS¤Ç¼¨¤µ¤ì¤ë¡£ ¥·¥§¥ë¥×¥í¥°¥é¥Þ¤ÏÃí°Õ¤¹¤ë¤³¤È! awk¤Ï (Unix Bourne ¥·¥§¥ë¡¢sh¤äbash¤Î¤è¤¦¤Ê) POSIX¸ß´¹¤Î¥·¥§¥ë¤¬»È¤Ã¤Æ¤¤¤ëIFS¤È¤¤¤¦Ì¾Á°¤ÎÊÑ¿ô¤Ï»È¤ï¤Ê¤¤¡£

awk¥×¥í¥°¥é¥àÃæ¤ÇÂåÆþ±é»»»Ò`=' (see section ÂåÆþ¼°) ¤ò»È¤Ã¤ÆFS¤ÎÃͤòÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢¤³¤ì(FS¤ÎÃͤòÊѹ¹¤¹¤ë¤³¤È)¤ò¹Ô¤¦¤Î¤ËÀµ¤·¤¤¥¿¥¤¥ß¥ó¥°¤Ï ¼Â¹Ô¤Î³«»Ï»þ¡¢ÆþÎϤ¬½èÍý¤µ¤ì¤ë°ÊÁ°¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï°ìÈֺǽé¤Î¥ì¥³¡¼¥É¤¬Å¬Àڤʥ»¥Ñ¥ì¡¼¥¿¤ÇÆÉ¤ß¹þ¤ß¤¬¹Ô¤ï¤ì¤ë¤«¤é¤Ç¤¢¤ë¡£ ¤³¤Î¥¿¥¤¥ß¥ó¥°¤ÇÊѹ¹¤ò¹Ô¤¦¤¿¤á¤Ë¤ÏBEGIN¥¹¥Ú¥·¥ã¥ë¥Ñ¥¿¡¼¥ó¤ò»È¤¦ (see section ÆÃ¼ì¥Ñ¥¿¡¼¥ó BEGIN ¤È END)¡£ Î㤨¤Ð¡¢¼¡¤ÎÎã¤Ç¤ÏFS¤ÎÃͤò","¤È¤¤¤¦Ê¸»úÎó¤ËÀßÄꤷ¤Æ¤¤¤ë¡£

 
awk 'BEGIN { FS = "," } ; { print $2 }'
   

ÆþÎϤȤ·¤Æ¼¡¤Î¤â¤Î¤òÍ¿¤¨¤ë:

 
John Q. Smith, 29 Oak St., Walamazoo, MI 42139
   

Àè¤Îawk¥×¥í¥°¥é¥à¤Ï `•29•Oak•St.' ¤È¤¤¤¦Ê¸»úÎó¤ò¥ì¥³¡¼¥É¤«¤é¼è¤ê½Ð¤·¡¢½ÐÎϤ¹¤ë¡£

¤È¤­¤È¤·¤Æ¡¢¥»¥Ñ¥ì¡¼¥È¥­¥ã¥é¥¯¥¿¤ò´Þ¤ó¤Ç¤Ï¤¤¤ë¤¬¤½¤ì¤òʬ³ä¤·¤¿¤¯¤Ï¤Ê¤¤ ¤È¤¤¤¦¥Ç¡¼¥¿¤ò°·¤¤¤¿¤¤¤È¤­¤¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ Î㤨¤Ð¡¢Àè¤ÎÎã¤ÎÃæ¤Ë¤¢¤ë¿Í̾¤Ï°Ê²¼¤Î¤è¤¦¤Ë ¥¿¥¤¥È¥ë¤ä¥µ¥Õ¥£¥Ã¥¯¥¹¤¬¤Ä¤¤¤Æ¤¤¤ë²ÄǽÀ­¤¬¤¢¤ë:

 
John Q. Smith, LXIX, 29 Oak St., Walamazoo, MI 42139
   

Àè¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ï`•29•Oak•St.'¤Ç¤Ï¤Ê¤¯¡¢ `•LXIX'¤ò¼è¤ê½Ð¤¹¡£ ¤â¤·¥×¥í¥°¥é¥à¤¬½»½ê¤ò½ÐÎϤ¹¤ë¤È´üÂÔ¤·¤Æ¤¤¤¿¤Ê¤é¤Ð¡¢¤½¤Î·ë²Ì¤Ë¶Ã¤«¤µ¤ì¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ¤À¤«¤é¡¢¤³¤ÎÍͤÊÌäÂê¤òÈò¤±¤ë¤¿¤á¤Ë¥Ç¡¼¥¿¤Î¥ì¥¤¥¢¥¦¥È¤È¡¢ ¥»¥Ñ¥ì¡¼¥¿¤È¤Ê¤ë¥­¥ã¥é¥¯¥¿¤Ï¿µ½Å¤ËÁªÂò¤»¤Í¤Ð¤Ê¤é¤Ê¤¤ (¤â¤·¥Ç¡¼¥¿¤¬´Êñ¤Ë½èÍý¤Ç¤­¤ë¤è¤¦¤Ê½ñ¼°¤Ç¤Ê¤¤¤Î¤Ê¤é¡¢¤Þ¤ººÇ½é¤Ë Ê̤Îawk¥×¥í¥°¥é¥à¤ÇÀ°·Á¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤À¤í¤¦)¡£

FS is a special case---it is taken to specify the default manner Ä̾¥Õ¥£¡¼¥ë¥É¤Ï°ì¤Ä¤Î¶õÇò¤Ç¤Ï¤Ê¤¯¶õÇò¤ÎʤÓ(¥¹¥Ú¡¼¥¹¤«¥¿¥Ö¤«²þ¹Ô)¤Ç¶èÀÚ¤é¤ì¤ë¡£ ¹Ô¤Ë¤¢¤ëÆó¤Ä¤Î¥¹¥Ú¡¼¥¹¤Ï¶õ¤Î¥Õ¥£¡¼¥ë¥É¤ò¶èÀÚ¤é¤Ê¤¤¡£ ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÃÍ¤Ï " "¤È¤¤¤¦Ê¸»úÎó¤Ç¤¢¤ë¤¬¡¢ ¤â¤·¤³¤ÎÃͤòÉáÄÌÄ̤ê»È¤Ã¤¿¤È¤·¤¿¤é¡¢Æó¤Ä¤Î¶õÇò¤«¤é¤Ê¤ë¤è¤¦¤Ê¹Ô¤Ï¶õÇò¤Ï Æó¤Ä¤Î¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤Æ°·¤ï¤ì¡¢·ë²Ì¤È¤·¤Æ awk¤Ï¶õ¤Î¥Õ¥£¡¼¥ë¥É¤òºî¤ê¤À¤¹¤Î¤À¤í¤¦¤«? ¼ÂºÝ¤Ë¤Ï°Ê²¼¤ÎÍýͳ¤Ë¤è¤Ã¤Æ¤³¤Î¤è¤¦¤Ê¤³¤È¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£ FS¤ÎÃͤ¬°ì¤Ä¤Î¶õÇò¤Ç¤¢¤Ã¤¿¾ì¹ç¤Ë¤ÏÆÃ¼ì¤Ê¾ì¹ç¤È¤·¤Æ¡¢ ¥Õ¥£¡¼¥ë¥É¤Îʬ³ä¤Î¥ë¡¼¥ë¤ò¥Ç¥Õ¥©¥ë¥È¤ÈƱ¤¸Íͤˤ¹¤ë

FS¤ÎÃͤ¬Â¾¤Î¥­¥ã¥é¥¯¥¿¤¬°ìʸ»ú¡¢Î㤨¤Ð","¤ÎÍͤʾì¹ç¤Ë¤Ï ¤½¤Î¥­¥ã¥é¥¯¥¿¤ÏÆó¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤òʬ³ä¤¹¤ëÍͤʷë²Ì¤È¤Ê¤ë¡£ Æó¤Ä¤ÎϢ³¤·¤¿¥­¥ã¥é¥¯¥¿¤Ï¶õ¤Î¥Õ¥£¡¼¥ë¥É¤òʬ³ä¤¹¤ë¡£ ¤â¤·¡¢¹Ô¤ÎÀèÆ¬¤äËöÈø¤Ë¡Ê¶èÀÚ¤ê¤Î¡Ë¥­¥ã¥é¥¯¥¿¤¬¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï ¶õ¤Î¥Õ¥£¡¼¥ë¥É¤¬¤¢¤ë¤è¤¦¤Ë¶èÀڤ롣 ¥¹¥Ú¡¼¥¹¤Ï¤³¤Î¥ë¡¼¥ë¤Ë½¾¤ï¤Ê¤¤¤¿¤À°ì¤Ä¤Î¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.1 ¥Õ¥£¡¼¥ë¥Éʬ³ä¤Î¤¿¤á¤ËÀµµ¬É½¸½¤ò»È¤¦

Àè¤Î¥µ¥Ö¥»¥¯¥·¥ç¥ó¤Ç¤Ïñ°ì¤Î¥­¥ã¥é¥¯¥¿¤äñ½ã¤Êʸ»úÎó¤ò FS¤ÎÃͤȤ·¤ÆÍѤ¤¤ë¤³¤È¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤¿¡£ ¤è¤ê°ìÈÌŪ¤Ë¤Ï¡¢FS¤ÎÃͤÏÀµµ¬É½¸½¤ò¹½À®¤¹¤ëʸ»úÎó¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤Î¾ì¹ç¡¢¥ì¥³¡¼¥É¤ÎÃæ¤Ç¤½¤ì¤Ë¥Þ¥Ã¥Á¤¹¤ë¤â¤Î¤¬¥Õ¥£¡¼¥ë¥É¤òʬ³ä¤¹¤ë¡£ ¤¿¤È¤¨¤Ð:

 
FS = ", \t"
   

¤³¤Î¤è¤¦¤ÊÂåÆþ¤Ï¡¢ ¥«¥ó¥Þ¡¢¥¹¥Ú¡¼¥¹¡¢¥¿¥Ö¤¬¸å¤í¤Ë³¤¤¤Æ¤¤¤ëÎΰ褬¥Õ¥£¡¼¥ë¥É¤Ë¤Ê¤ë ¡£

Àµµ¬É½¸½¤Î¤¢¤Þ¤ê½ÅÍפǤʤ¤Îã¤È¤·¤Æ¡¢Àè¤ÎÎã¤Î¥«¥ó¥Þ¤Î¤è¤¦¤Ë¡¢ °ì¤Ä¤Î¥¹¥Ú¡¼¥¹¤Ç¥Õ¥£¡¼¥ë¥Éʬ³ä¤ò¹Ô¤¤¤¿¤¤¤È¤¤¤¦¾õ¶·¤ò¹Í¤¨¤è¤¦¡£ ¤³¤ì¤Ï¡¢FS¤Ë"[ ]" (º¸¥Ö¥é¥±¥Ã¥È¥¹¥Ú¡¼¥¹¡¢±¦¥Ö¥é¥±¥Ã¥È) ¤ò¥»¥Ã¥È¤¹¤ë¤³¤È¤Ç¤Ç¤­¤ë¡£¤³¤ÎÀµµ¬É½¸½¤Ï°ì¤Ä¤Î¥¹¥Ú¡¼¥¹¤Ë¥Þ¥Ã¥Á¤·¡¢ ¾¤Î¤â¤Î¤Ë¤Ï¥Þ¥Ã¥Á¤·¤Ê¤¤(see section Àµµ¬É½¸½)¡£

`FS = " "'(°ì¤Ä¤Î¥¹¥Ú¡¼¥¹)¤È¡¢ `FS = "[ \t\n]+"' (°ì¤Ä°Ê¾å¤Î¥¹¥Ú¡¼¥¹¡¢¥¿¥Ö¤Ë¥Þ¥Ã¥Á¤¹¤ëÀµµ¬É½¸½)¤Î´Ö¤Î°ã¤¤¤Ï½ÅÍפǤ¢¤ë¡£ ¤³¤ì¤éξÊý¤ÎFS¤ÎÃͤϡ¢¶¦¤Ë¥Õ¥£¡¼¥ë¥Éʬ³ä¤ò¥¹¥Ú¡¼¥¹¡¢¥¿¥Ö¡¢²þ¹Ô(¤ÎϢ³)¤Ç¹Ô¤¦¡£ ¤·¤«¤·¡¢FS¤¬" "¤Ç¤¢¤Ã¤¿¤È¤­¡¢awk¤ÏºÇ½é¤Ë¡¢ ÀèÆ¬¤äËöÈø¤ÇϢ³¤·¤Æ¤¤¤ë¶õÇò¤Î¤Ï¤®¼è¤ê¤ò¹Ô¤¤¡¢¤½¤ì¤«¤é¥Õ¥£¡¼¥ë¥Éʬ³ä¤ò¼Â¹Ô¤¹¤ë¡£ Îã¤òµó¤²¤ë¤È¡¢¼¡¤Î¥Ñ¥¤¥×¥é¥¤¥ó¤Ç¤Ï`b'¤¬½ÐÎϤµ¤ì¤ë:

 
$ echo ' a b c d ' | awk '{ print $2 }'
-| b
   

¤·¤«¤·¡¢¼¡¤Î¥Ñ¥¤¥×¥é¥¤¥ó¤Ç¤Ï`a'¤¬½ÐÎϤµ¤ì¤ë (¤½¤ì¤¾¤ì¤Îʸ»ú¤Î²ó¤ê¤Ë¤Ï;·×¤Ê¥¹¥Ú¡¼¥¹¤¬ÉÕ¤¤¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ):

 
$ echo ' a  b  c  d ' | awk 'BEGIN { FS = "[ \t\n]+" }
>                                  { print $2 }'
-| a
   

¤³¤Î¾ì¹ç¡¢Âè°ì¥Õ¥£¡¼¥ë¥É¤Ï¶õ(null¡¢empty)¤Ç¤¢¤ë¡£

ÀèÆ¬¤äËöÈø¤Ë¤¢¤ë¶õÇò¤Ï$0¤¬ºÆ¹½À®¤µ¤ì¤¿¤È¤­¤Ë¤Ï¤¤¤Ä¤Ç¤â¼è¤ê½ü¤«¤ì¤ë¡£ Î㤨¤Ð¼¡¤Î¥Ñ¥¤¥×¥é¥¤¥ó¤Ç:

 
$ echo '   a b c d' | awk '{ print; $2 = $2; print }'
-|    a b c d
-| a b c d
   

ºÇ½é¤Îprintʸ¤ÏÆÉ¤ß¹þ¤ó¤À¥ì¥³¡¼¥É¤ò¥ì¥³¡¼¥É¤ÎÀèÆ¬¤Ë¤¢¤ë¶õÇò¤â´Þ¤á¤Æ ¤½¤Î¤Þ¤Þ½ÐÎϤ¹¤ë¡£$2¤ËÂФ¹¤ëÂåÆþ¤Ï¡¢$1¤«¤é $NF¤Þ¤Ç¤òOFS¤ÎÃͤÇʬ³ä¤µ¤ì¤¿¤â¤Î¤È¤·¤ÆÏ¢·ë¤·¤Æ $0¤òºÆ¹½À®¤¹¤ë¡£ÀèÆ¬¤Î¶õÇò¤Ï$1¤ËÃíÌܤ·¤¿¤È¤­¤Ë¤Ï̵»ë¤µ¤ì¤Æ¤¤¤ë¤Î¤Ç¡¢ ¿·¤·¤¤$0¤Ë¤Ï´Þ¤Þ¤ì¤Ê¤¤¡£¤½¤·¤Æ¡¢ºÇ¸å¤Îprintʸ¤Ï¿·¤·¤¤$0¤ò½ÐÎϤ¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.2 ¤³¤³¤Î¥­¥ã¥é¥¯¥¿¤òÊ̸ĤΥե£¡¼¥ë¥É¤Ë¤¹¤ë

¥ì¥³¡¼¥ÉÃæ¤Î¸Ä¡¹¤Î¥­¥ã¥é¥¯¥¿¤òÊ̸Ĥ˥Á¥§¥Ã¥¯¤·¤¿¤¤¤È»×¤¦¤³¤È¤Ï¤Þ¤Þ¤¢¤ë¤À¤í¤¦¡£ gawk¤Ç¤Ï¡¢¤½¤ì¤ò´Êñ¤Ë¹Ô¤¨¤ë¡£ ñ¤Ë¶õʸ»úÎó("")¤ò FS¤Ë¥»¥Ã¥È¤¹¤ë¤ËÂåÆþ¤¹¤ì¤Ð¤è¤¤¡£ ¤³¤Î¾ì¹ç¡¢¥ì¥³¡¼¥ÉÃæ¤Î¸Ä¡¹¤ÎÆÈΩ¤·¤¿¥­¥ã¥é¥¯¥¿¤¬¤½¤ì¤¾¤ì°ì¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤È¤Ê¤ë¡£ Îã¤òµó¤²¤ë¤È:

 
$ echo a b | gawk 'BEGIN { FS = "" }
>                  {
>                      for (i = 1; i <= NF; i = i + 1)
>                          print "Field", i, "is", $i
>                  }'
-| Field 1 is a
-| Field 2 is
-| Field 3 is b
   

ÅÁÅýŪ¤Ë¡¢FS¤¬""¤Ë¥»¥Ã¥È¤µ¤ì¤Æ¤¤¤ë¤È¤­¤Î¿¶¤ëÉñ¤¤¤Ï̤ÄêµÁ¤À¤Ã¤¿¡£ ¤³¤Î¾ì¹çUNIX¤Îawk¤Ï¡¢Ã±¤Ë¥ì¥³¡¼¥ÉÁ´ÂΤò°ì¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤Ç¤¢¤ë¤è¤¦¤Ë°·¤¦ (d.c.) gawk¤Ï¸ß´¹¥â¡¼¥É(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¤Ç¤Ï¡¢ FS¤¬¶õʸ»úÎó¤Î¾ì¹ç¤Ë¤Ï¤³¤Î¤è¤¦¤Êưºî¤ò¤¹¤ë¤è¤¦¤Ë¤Ê¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.3 ¥³¥Þ¥ó¥É¥é¥¤¥ó¤«¤é FS ¤òÀßÄꤹ¤ë

FS¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Ç¥»¥Ã¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤½¤ì¤Ë¤Ï`-F'¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¡£ Îã¤òµó¤²¤è¤¦:

 
awk -F, 'program' input-files
   

¤³¤ÎÎã¤Ç¤ÏFS¤ò`,'¤È¤¤¤¦¥­¥ã¥é¥¯¥¿¤Ë¥»¥Ã¥È¤·¤Æ¤¤¤ë¡£ ¤³¤Î¥ª¥×¥·¥ç¥ó¤¬¾®Ê¸»ú¤Î`f'¤Ç¤Ï¤Ê¤¯Âçʸ»ú¤Î`F'¤ò»È¤Ã¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¡£ ¸å¼Ô¤Î`-f'¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤Ï¡¢ awk¥×¥í¥°¥é¥à¤¬Æþ¤Ã¤Æ¤¤¤ë¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ë¤â¤Î¤Ç¤¢¤ë¡£ ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó¤ÎÂ羮ʸ»ú¤Ï¶èÊ̤µ¤ì¤ë¤Î¤Ç¡¢ `-F'¤È `-f'¤È¤¤¤¦Æó¤Ä¤Î¥ª¥×¥·¥ç¥ó¤Ï¤Þ¤Ã¤¿¤¯Ê̤Τâ¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤éξÊý¤Î¥ª¥×¥·¥ç¥ó¤òƱ»þ¤Ë»È¤Ã¤Æ¡¢ ÊÑ¿ôFS¤Ë(¥»¥Ñ¥ì¡¼¥¿¤ò)¥»¥Ã¥È¤¹¤ë¤Î¤ÈƱ»þ¤Ë awk¥×¥í¥°¥é¥à¤ò¥Õ¥¡¥¤¥ë¤«¤éÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

`-F'¤Î°ú¿ô¤È¤·¤Æ»È¤Ã¤¿Ãͤϡ¢Áȹþ¤ßÊÑ¿ôFS ¤ËÂåÆþ¤·¤¿¤È¤­¤È¤Þ¤Ã¤¿¤¯Æ±¤¸¤è¤¦¤Ë°·¤ï¤ì¤ë¡£ ¤É¤¦¤¤¤¦¤³¤È¤«¤È¤¤¤¦¤È¡¢¤â¤·¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤¬¥¹¥Ú¥·¥ã¥ë¥­¥ã¥é¥¯¥¿¤ò´Þ¤ó¤Ç¤¤¤¿¤é¡¢ ¤½¤ì¤òŬÀڤ˥¨¥¹¥±¡¼¥×¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ Î㤨¤Ð¡¢`\'¤ò¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤Æ»È¤ª¤¦¤È¤¹¤ë¤Ê¤é¡¢ ¼¡¤Î¤è¤¦¤Ë¥¿¥¤¥×¤¹¤ëɬÍפ¬¤¢¤ë:

 
# same as FS = "\\"
awk -F\\\\ '…' files …
   

`\'¤Ï¥·¥§¥ë¤Ë¤è¤Ã¤Æ¥¯¥©¡¼¥Æ¥£¥ó¥°¤µ¤ì¤ë¤Î¤Ç¡¢awk¤Ë¤Ï `-F\\'¤¬¼ÂºÝ¤Ë¤ÏÅϤµ¤ì¤ë¡£awk¤Ï¤½¤ì¤«¤é¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹ ¤Î½èÍý¤ò`\\'¤ËÂФ·¤Æ¹Ô¤¦¤Î¤Ç¡¢ºÇ½ªÅª¤Ë¤Ï¤¿¤À°ì¤Ä¤Î`\'¤¬ ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤Æ»È¤ï¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£

ÆÃ¼ì¤Ê¥±¡¼¥¹¤È¤·¤Æ¡¢¸ß´¹¥â¡¼¥É(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¤Ë¤ª¤¤¤Æ `-F'¤Î°ú¿ô¤¬`t'¤Ç¤¢¤Ã¤¿¤È¤­¡¢FS¤Ë¤Ï¥¿¥Ö¥­¥ã¥é¥¯¥¿¤¬ ¥»¥Ã¥È¤µ¤ì¤ë¡£¥·¥§¥ë¤Ë¤ª¤¤¤Æ`-F\t'¤È¥¯¥©¡¼¥È¤Ê¤·¤ËÆþÎϤ·¤¿¤È¤­¡¢ `\'¤Ïºï½ü¤µ¤ì¤ë¤Î¤Çawk¤Ï¤¢¤Ê¤¿¤Ï¼ÂºÝ¤Ë¤Ï ¥Õ¥£¡¼¥ë¥É¤¬`t'¤Ç¤Ï¤Ê¤¯¤Æ¥¿¥Ö¤Ç¶èÀÚ¤é¤ì¤Æ¤¤¤ë¤Î¤À¤í¤¦¤È ȽÃǤ¹¤ë¤Î¤Ç¤¢¤ë¡£ËÜÅö¤Ë`t'¤Ç¥Õ¥£¡¼¥ë¥É¤ò¶èÀڤꤿ¤¤¤Î¤Ê¤é ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Ç`-v FS="t"' ¤« `-F"[t]"'¤È¤¹¤ë¡£

¤¿¤È¤¨¤Ð¡¢`baud.awk'¤È¤¤¤¦Ì¾Á°¤Î/300/¤È¤¤¤¦¥Ñ¥¿¡¼¥ó¤È `print $1'¤È¤¤¤¦¥¢¥¯¥·¥ç¥ó¤«¤é¤Ê¤ë¥×¥í¥°¥é¥à¥Õ¥¡¥¤¥ë¤ò»È¤Ã¤Æ¤ß¤è¤¦:

 
/300/   { print $1 }
   

`BBS-list'¤ËÂФ·¤Æ¼Â¹Ô¤¹¤ë¤È¤­¤Ë`-'¤òFS¤Ë¥»¥Ã¥È¤·¤¿ ¤È¤¹¤ë¡£°Ê²¼¤Ï¥³¥Þ¥ó¥É¤¬½ÐÎϤ·¤¿300¥Ü¡¼¤Ç±¿±Ä¤µ¤ì¤Æ¤¤¤ë BBS¤Î̾Á°¤È¤½¤ÎÅÅÏÃÈÖ¹æ¤ÎºÇ½é¤Î»°·å¤Î¥ê¥¹¥È¤Ç¤¢¤ë:

 
$ awk -F- -f baud.awk BBS-list
-| aardvark     555
-| alpo
-| barfly       555
-| bites        555
-| camelot      555
-| core         555
-| fooey        555
-| foot         555
-| macfoo       555
-| sdace        555
-| sabafoo      555
   

½ÐÎÏ¤ÎÆó¹ÔÌܤËÃíÌܤ·¤Æ¤Û¤·¤¤¡£¥ª¥ê¥¸¥Ê¥ë¤Î¥Õ¥¡¥¤¥ë¤Î Æó¹ÔÌܤϰʲ¼¤Î¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤¿:

 
alpo-net     555-3412     2400/1200/300     A
   

¥·¥¹¥Æ¥à¤Î̾Á°¤Î°ìÉô¤Ë¤¢¤ë`-'¤¬ÅÅÏÃÈÖ¹æ¤Î`-'¤ÎÂå¤ï¤ê¤Ë ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤Æ¸«¤Ê¤µ¤ì¤Æ¤·¤Þ¤Ã¤Æ¤¤¤ë¡£ ¤³¤ì¤Ï¤¢¤Ê¤¿¤¬¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤ä¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤òÁªÂò¤¹¤ë¤È¤­¤Ë¤Ï Ãí°Õ¿¼¤¯¤¢¤é¤Í¤Ð¤Ê¤é¤Ê¤¤¤È¤¤¤¦¤³¤È¤Î¼ÂÎã¤Ç¤¢¤ë¡£

ñ°ì¤Î¥­¥ã¥é¥¯¥¿¤ò¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤¹¤ëºÇ¤â°ìÈÌŪ¤Ê¤Î¤Ï ¿ʬUnix¥·¥¹¥Æ¥à¤Î¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ë¤È¤­¤À¤í¤¦¡£ ¿¤¯¤ÎUNIX¥·¥¹¥Æ¥à¤Ç¤Ï¡¢¥æ¡¼¥¶¡¼¤Ï¥·¥¹¥Æ¥à¤Î¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ëÃæ¤Ë ¥æ¡¼¥¶¡¼°ì¿ÍÅö¤ê°ì¹Ô¤Î¥¨¥ó¥È¥ê¤ò¤½¤ì¤¾¤ì½êÍ­¤·¤Æ¤¤¤ë¡£ ¤½¤³¤Ë¤¢¤ë¾ðÊó¤Ï¥³¥í¥ó(`:')¤Ë¤è¤Ã¤Æ¶èÀÚ¤é¤ì¤Æ¤¤¤Æ¡¢ ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤Ë¤Ï¥æ¡¼¥¶¡¼¤Î¥í¥°¥ª¥ó̾¤¬¡¢ ÆóÈÖÌܤΥե£¡¼¥ë¥É¤Ë¤Ï¤½¤Î¥æ¡¼¥¶¡¼¤Î°Å¹æ²½¤µ¤ì¤¿¥Ñ¥¹¥ï¡¼¥É¤¬¤¢¤ë¡£ ¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë¤Î¥¨¥ó¥È¥ê¤Ï¤ª¤ª¤à¤Í¼¡¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¢¤ë¡£

 
arnold:xyzzy:2076:10:Arnold Robbins:/home/arnold:/bin/bash
   

¼¡¤Î¥×¥í¥°¥é¥à¤Ï¥·¥¹¥Æ¥à¤Î¥Ñ¥¹¥ï¡¼¥É¥Õ¥¡¥¤¥ë¤ò¸¡º÷¤·¤Æ¡¢ ¥Ñ¥¹¥ï¡¼¥É¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Ê¤¤¥¨¥ó¥È¥ê¤ò½ÐÎϤ¹¤ë:

 
awk -F: '$2 == ""' /etc/passwd
   

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.5.4 ¥Õ¥£¡¼¥ë¥Éʬ³ä¤Î¤Þ¤È¤á

FS¤ÎÃͤȤ·¤ÆÊ¸»úÎóÄê¿ô¤òÂåÆþ¤¹¤ë¤È¤­¤Ë¿´¤Ëα¤á¤Æ¤ª¤¯¤Ù¤­ ½ÅÍפʤ³¤È¤Ï¡¢Ä̾ï¤Îawk¤Îʸ»úÎó½èÍý¤¬¹Ô¤ï¤ì¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¤¿¤È¤¨¤ÐUnix¤Îawk¤ägawk¤Ç¤Ï¡¢ `FS = "\.."'¤È¤¤¤¦ÂåÆþ¤ÏFS¤Ë".."¤È¤¤¤¦Ê¸»úÎó¤ò ÂåÆþ¤¹¤ë(¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤¬¼è¤ê½ü¤«¤ì¤ë)¡£¤³¤ì¤Ï ¡È¥Õ¥£¡¼¥ë¥É¤ÏǤ°Õ¤Î¥­¥ã¥é¥¯¥¿Æó¤Ä¤ÎʤӤˤè¤Ã¤ÆÊ¬³ä¤µ¤ì¤ë¡É¤È¤¤¤¦ Àµµ¬É½¸½¤òÀ¸À®¤¹¤ë¡£¤â¤·¥Õ¥£¡¼¥ë¥É¤òǤ°Õ¤Î¥­¥ã¥é¥¯¥¿¤¬¸å³¤¹¤ë ¥Ô¥ê¥ª¥É¤Ë¤è¤Ã¤ÆÊ¬³ä¤·¤¿¤¤¤Î¤Ê¤é¡¢`FS = "\\.."'¤ò»ÈÍѤ¹¤ë¡£

¼¡¤Î¥Æ¡¼¥Ö¥ë¤ÏFS¤ÎÃͤ˴ð¤Å¤¤¤Æ¤É¤Î¤è¤¦¤Ë¥Õ¥£¡¼¥ë¥Éʬ³ä¤¬¹Ô¤ï¤ì¤ë¤« ¤Þ¤È¤á¤¿¤â¤Î¤Ç¤¢¤ë(`=='¤Ï¡È¤ËÅù¤·¤¤¡É¤ò°ÕÌ£¤¹¤ë):

FS == " "

¥Õ¥£¡¼¥ë¥É¤Ï¶õÇò¤ÎʤӤˤè¤Ã¤ÆÊ¬³ä¤µ¤ì¤ë¡£ Àè¹Ô¤¹¤ë¶õÇò¤äËöÈø¤Î¶õÇò¤Ï̵»ë¤µ¤ì¤ë¡£¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ë¡£

FS == ¾¤ÎǤ°Õ¤Îñ°ì¥­¥ã¥é¥¯¥¿

¥Õ¥£¡¼¥ë¥É¤Ï¤½¤Î¥­¥ã¥é¥¯¥¿¤Ë¤è¤Ã¤ÆÊ¬³ä¤µ¤ì¤ë¡£ ¥­¥ã¥é¥¯¥¿¤ÎʤӤ϶õÇò¤Î¥Õ¥£¡¼¥ë¥É¤òÀ¸À®¤·¡¢Àè¹Ô¤¹¤ë¤â¤Î¤ä ËöÈø¤Î¤â¤Î¤â½èÍý¤µ¤ì¤ë¡£¥­¥ã¥é¥¯¥¿¤ÏÀµµ¬É½¸½¤Î¥á¥¿¥­¥ã¥é¥¯¥¿¤Ç ¤¢¤Ã¤Æ¤â¤è¤¤¡£¤³¤ì¤Ï¥¨¥¹¥±¡¼¥×¤¹¤ëɬÍפϤʤ¤¡£

FS == Àµµ¬É½¸½

¥Õ¥£¡¼¥ë¥É¤ÏÀµµ¬É½¸½¤Ë¥Þ¥Ã¥Á¤·¤¿(ñ°ì¡¢¤â¤·¤¯¤ÏÊ£¿ô¤Î)¥­¥ã¥é¥¯¥¿¤Ë¤è¤Ã¤Æ ʬ³ä¤µ¤ì¤ë¡£Àµµ¬É½¸½¤Ë¥Þ¥Ã¥Á¤·¤¿Àè¹Ô¤¹¤ë¤â¤Î¤äËöÈø¤Î¤â¤Î¤Ï¶õ¤Î¥Õ¥£¡¼¥ë¥É¤ò ʬ³ä¤¹¤ë¡£

FS == ""

¥ì¥³¡¼¥ÉÃæ¤Î³Æ¥­¥ã¥é¥¯¥¿¤¬Ê¬³ä¤µ¤ì¤¿¥Õ¥£¡¼¥ë¥É¤È¤Ê¤ë (¤³¤ì¤Ïgawk¤Î³ÈÄ¥¤Ç¤¢¤ë¡£POSXIɸ½à¤Ç¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤)¡£

Advanced Notes: FS ¤ÎÊѹ¹¤Ï¥Õ¥£¡¼¥ë¥É¤Ë±Æ¶Á¤·¤Ê¤¤

POSIX¤Îɸ½à¤Ë½¾¤¨¤Ð¡¢awk¤Ï¥ì¥³¡¼¥É¤òÆÉ¤ß¹þ¤ó¤À¤È¤­¤Ë ¥Õ¥£¡¼¥ë¥É¤Îʬ³ä¤ò¤¹¤ë¤è¤¦¤Ëưºî¤¹¤ë¤³¤È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ ¤³¤ì¤Ï¥ì¥³¡¼¥É¤ÎÆÉ¤ß¹þ¤ß¤¬½ª¤ï¤Ã¤¿¸å¤ÇFS¤ÎÃͤòÊѹ¹¤Ç¤­¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ê¡¢ ¥Õ¥£¡¼¥ë¥É¤ÎÃÍ(¤É¤Î¤è¤¦¤Ëʬ³ä¤µ¤ì¤¿¤«¡¢¤È¤¤¤¦¤³¤È)¤Ï¿·¤·¤¤¤â¤Î¤Ç¤Ï¤Ê¤¯¡¢ ¸Å¤¤Êѹ¹Á°¤ÎFS ¤ÎÃͤòÈ¿±Ç¤·¤¿¤â¤Î¤Ç¤¢¤ë¤Ù¤­¤Ç¤¢¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£

¤·¤«¤·¡¢Â¿¤¯¤Îawk½èÍý·Ï¤Ç¤³¤Îưºî¤ò¤·¤Æ¤ª¤é¤º¡¢ ¼ÂºÝ¤Ë¥Õ¥£¡¼¥ë¥É¤¬»²¾È¤µ¤ì¤ë¤Þ¤Çʬ³ä¤òÃ٤餻¤Æ¤¤¤ë¡£ ¤³¤Î¾ì¹ç¡¢¥Õ¥£¡¼¥ë¥É¤Ï¿·¤·¤¤FS¤ÎÃͤò»È¤Ã¤ÆÊ¬³ä¤µ¤ì¤ë¤Î¤À!(d.c.) ¤³¤Î¿¶¤ëÉñ¤¤¤ÏÄ´¤Ù¤ë¤Î¤¬Æñ¤·¤¤¡£ °Ê²¼¤ÎÎã¤Ï¤³¤ì¤éÆó¤Ä¤Î¤ä¤êÊý¤Î°ã¤¤¤òÀâÌÀ¤¹¤ë¤â¤Î¤Ç¤¢¤ë (¤³¤Îsed(18) ¥³¥Þ¥ó¥É¤Ï`/etc/passwd'¤ÎºÇ½é¤Î°ì¹Ô¤À¤±¤ò½ÐÎϤ¹¤ë)¡£

 
sed 1q /etc/passwd | awk '{ FS = ":" ; print $1 }'
   

¤³¤ì¤ÏÀµ¤·¤¯¤Ê¤¤¼ÂÁõ¤Îawk¤Ç¤Ï°Ê²¼¤Î½ÐÎϤò¹Ô¤¦:

 
root
   

°ìÊýgawk¤Ç¤Ï°Ê²¼¤Î¤è¤¦¤Ê½ÐÎϤȤʤë:

 
root:nSijPlPhZZwgE:0:0:Root:/:
   

Advanced Notes: FS ¤È IGNORECASE

IGNORECASEÊÑ¿ô(see section awk¤òÀ©¸æ¤¹¤ëÁȤ߹þ¤ßÊÑ¿ô)¤Ï FS¤¬Àµµ¬É½¸½¤Ç¤¢¤ë¤È¤­¤Ë¤Î¤ß¥Õ¥£¡¼¥ë¥Éʬ³ä¤Ë±Æ¶Á¤òµÚ¤Ü¤¹¡£ FS¤¬Ã±°ì¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¤È¤­¤Ë¤Ï¤¿¤È¤¨¤½¤ì¤¬Ä̾ï¤Îʸ»ú¤Ç¤¢¤Ã¤¿¤È¤·¤Æ¤â ±Æ¶Á¤·¤Ê¤¤¡£¤·¤¿¤¬¤Ã¤Æ:

 
FS = "c"
IGNORECASE = 1
$0 = "aCa"
print $1
   

¤³¤Î½ÐÎϤÏ`aCa'¤È¤Ê¤ë¡£ËÜÅö¤ËÂ羮ʸ»ú¤Î¶èÊ̤ò̵»ë¤·¤Æ¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È ¤Ç¥Õ¥£¡¼¥ë¥Éʬ³ä¤ò¹Ô¤¤¤¿¤¤¤Î¤Ê¤é¡¢¤½¤ì¤òɽ¤¹Àµµ¬É½¸½¡¢ ¤¿¤È¤¨¤Ð`FS = "[c]"'¤ò»ÈÍѤ¹¤ë¡£¤³¤Î¾ì¹ç¤Ë¤ÏIGNORECASE¤Ï ±Æ¶Á¤òµÚ¤Ü¤¹¤³¤È¤Ë¤Ê¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.6 ¸ÇÄêĹ¥Ç¡¼¥¿¤òÆÉ¤à

Ãí°Õ: ¤³¤Î¥»¥¯¥·¥ç¥ó¥»¥¯¥·¥ç¥ó¤Ç¤Ï¡¢Àè¿ÊŪ¤Êgawk¤Îµ¡Ç½¤Ë¤Ä¤¤¤ÆÀâÌÀ¤·¤Æ¤¤¤ë¡£ ¤â¤·¤¢¤Ê¤¿¤¬awk½é¿´¼Ô¤Ê¤é¡¢ ½é¤á¤ÆÆÉ¤ó¤À¤È¤­¤Ë¤Ï¤³¤³¤òÈô¤Ð¤·¤¿¤¯¤Ê¤ë¤«¤â¤·¤ì¤Ê¤¤¡£

gawk 2.13 ¤Ç¿·¤¿¤Ë¡¢Éý¤¬¸ÇÄꤵ¤ì¤Æ¤¤¤Æ¥»¥Ñ¥ì¡¼¥¿¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤ ¥Õ¥£¡¼¥ë¥É¤ò°·¤¦¤¿¤á¤Îµ¡Ç½¤òƳÆþ¤·¤¿¡£ ¤½¤³¤ÇÁÛÄꤵ¤ì¤Æ¤¤¤ë¥Ç¡¼¥¿¤Ïŵ·¿Åª¤Ë¤Ï¸Å¤¤FORTRAN¥×¥í¥°¥é¥à¤ËÂФ¹¤ë¿ôÃÍ¤ÎÆþÎϤȤ·¤Æ¡¢ ¤¢¤ë¤¤¤Ï¾¤Î¥×¥í¥°¥é¥à¤ÎÆþÎϤȤ·¤Æ°·¤ï¤ì¤ë¤³¤È¤ò¹Íθ¤·¤Æ¤¤¤Ê¤¤¥×¥í¥°¥é¥à¤Î ½ÐÎÏ¤ÎÆó¤Ä¤Î¤¦¤Á¤Î¤¤¤º¤ì¤«¤À¤í¤¦¡£

¸å¤Çµó¤²¤ëÎã¤Ï¡¢Á´¤Æ¤Î¥«¥é¥à¤¬²ÄÊÑ¿ô¤Î¥¹¥Ú¡¼¥¹¤ò»ÈÍѤ·¤ÆÀ°Îó¤µ¤ì¤Æ¤¤¤Æ¡¢ ¶õ¤Î¥Õ¥£¡¼¥ë¥É¤¬¥¹¥Ú¡¼¥¹¤Ç¹½À®¤µ¤ì¤Æ¤¤¤ë¥Ç¡¼¥¿¤Î¥Æ¡¼¥Ö¥ë¤Ç¤¢¤ë¡£ ¸½¼Â¤Ë¡¢ awk¤ÎÄ̾ï¤ÎFS¤Ë´ð¤Å¤¤¤Æ¹Ô¤¦¥Õ¥£¡¼¥ë¥Éʬ³ä¤Ï ¤³¤ÎÍͤʥ±¡¼¥¹¤Ç¤Ï¤¦¤Þ¤¯Æ¯¤«¤Ê¤¤¡£ awk¥×¥í¥°¥é¥àÃæ¤Ç$0¤ËÂФ·¤Æsubstr¤ò¤¯¤êÊÖ¤·¸Æ¤Ö¤³¤È¤Ç ¼Â¸½¤Ç¤­¤ë¤¬ (see section ʸ»úÎóÁàºî´Ø¿ô)¡¢¤³¤ì¤Ï¥Ý¡¼¥¿¥Ö¥ë¤Ç¤¢¤Ã¤Æ¤â¡¢ awkward ¤Ç¤¢¤ê¡¢Â礭¤Ê¥Õ¥£¡¼¥ë¥ÉÈÖ¹æ¤Ç¤ÏÈó¸úΨŪ¤Ê¤ä¤êÊý¤Ç¤¢¤ë¡£

ÆþÎϥ쥳¡¼¥É¤ò¸ÇÄêÉý¤Î¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤¹¤ë¤È¤­¤Ë¤Ï¡¢ ÁȤ߹þ¤ßÊÑ¿ôFIELDWIDTHS ¤ËÀßÄꤵ¤ì¤¿¥¹¥Ú¡¼¥¹¤Ç¶èÀÚ¤é¤ì¤¿¿ô»ú¤ÎʤӤǻØÄꤹ¤ë¡£ ʤӤΤ½¤ì¤¾¤ì¤Î¿ô»ú¤Ï¡¢¥Õ¥£¡¼¥ë¥É¤ÎÉý¤ò¥Õ¥£¡¼¥ë¥É¤Î´Ö¤Î¥«¥é¥à¤ò´Þ¤á¤Æ»ØÄꤷ¤Æ¤¤¤ë¡£ ¤â¤·¡¢¥Õ¥£¡¼¥ë¥É¤Î´Ö¤Î¥«¥é¥à¤ò̵»ë¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢ ¸å³¤ò̵»ë¤¹¤ë¤è¤¦¤Ê¥Õ¥£¡¼¥ë¥É¤Îʬ³ä¤ò¤¹¤ëÉý¤ò»ØÄꤹ¤ë¤³¤È¤â¤Ç¤­¤ë¡£ Àµ¤Ç¤Ê¤¤¿ô¤ò¥Õ¥£¡¼¥ë¥ÉÉý¤È¤·¤ÆÍ¿¤¨¤ë¤ÈÃ×̿Ū¥¨¥é¡¼¤È¤Ê¤ë¡£ ¼¡¤Î¥Ç¡¼¥¿¤Ïw¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤Î½ÐÎϤǤ¢¤ë¡£ ¤³¤ì¤Ï¤Þ¤¿FIELDWIDTHS ¤Î»È¤¤Êý¤òÀâÌÀ¤¹¤ë¤Î¤Ë¤Á¤ç¤¦¤É¤è¤¤¡£

 
 10:06pm  up 21 days, 14:04,  23 users
User     tty       login  idle   JCPU   PCPU  what
hzuo     ttyV0     8:58pm            9      5  vi p24.tex
hzang    ttyV3     6:37pm    50                -csh
eklye    ttyV5     9:53pm            7      1  em thes.tex
dportein ttyV6     8:17pm  1:47                -csh
gierd    ttyD3    10:00pm     1                elm
dave     ttyD4     9:47pm            4      4  w
brent    ttyp0    26Jun91  4:46  26:46   4:41  bash
dave     ttyq4    26Jun9115days     46     46  wnewmail
   

¼¡¤Î¥×¥í¥°¥é¥à¤ÏÀè¤Û¤É¤Î¥Ç¡¼¥¿¤òÆþÎϤȤ·¡¢ ¥¢¥¤¥É¥ë¥¿¥¤¥à¤òÉäËÊÑ´¹¤·¤ÆÆþÎϥǡ¼¥¿¤ÎºÇ½é¤ÎÆó¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤È¡¢·×»»¤·¤¿»þ´Ö¤ò½ÐÎϤ¹¤ë:

Ãí°Õ: ¤³¤Î¥×¥í¥°¥é¥à¤Ï¤Þ¤ÀÀâÌÀ¤µ¤ì¤Æ¤¤¤Ê¤¤awk¤Îµ¡Ç½¤ò¤¤¤¯¤Ä¤«»È¤Ã¤Æ¤¤¤ë¡£

 
BEGIN  { FIELDWIDTHS = "9 6 10 6 7 7 35" }
NR > 2 {
    idle = $4
    sub(/^  */, "", idle)   # Àè¹Ô¤¹¤ë¶õÇò¤ò¼è¤ê½ü¤¯
    if (idle == "")
        idle = 0
    if (idle ~ /:/) {
        split(idle, t, ":")
        idle = t[1] * 60 + t[2]
    }
    if (idle ~ /days/)
        idle *= 24 * 60 * 60

    print $1, $2, idle
}
   

¥×¥í¥°¥é¥à¤Î¼Â¹Ô·ë²Ì¤Ï¼¡¤ÎÄ̤ê:

 
hzuo      ttyV0  0
hzang     ttyV3  50
eklye     ttyV5  0
dportein  ttyV6  107
gierd     ttyD3  1
dave      ttyD4  0
brent     ttyp0  286
dave      ttyq4  1296000
   

Ê̤Ρʤè¤ê¸½¼ÂŪ¤Ç¤¢¤í¤¦¡Ë¸ÇÄêÉý¤ÎÎã¤È¤Ê¤ëÆþÎϥǡ¼¥¿¤Ï¡¢ÅêɼÍÑ»æ¤Î»³¤«¤é¤ÎÆþÎϤÀ¤í¤¦¡£ ¹ç½°¹ñ¤Î°ìÉô¤Ç¤Ï¡¢Åêɼ¼Ô¤ÏÅêɼ¤ò¥³¥ó¥Ô¥å¡¼¥¿¥«¡¼¥É¤Î¥Ñ¥ó¥Á¤µ¤ì¤¿·ê¤òÁªÂò¤¹¤ë¤³¤È¤Ç¹Ô¤¦¡£ ¤³¤ì¤é¤Î¥«¡¼¥É¤ÏÅêɼ¤¬¤É¤Î¸õÊä¼Ô¤Ë¹Ô¤ï¤ì¤¿¤«¡¢ ¤¢¤ë¤¤¤Ï¤É¤ÎÍó¤¬ÁªÂò¤µ¤ì¤¿¤«¤ò¿ô¤¨¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£ Åêɼ¼Ô¤¬°ìÉô¤ÎÅêɼ¤ò¹Ô¤ï¤Ê¤«¤Ã¤¿¾ì¹ç¡¢Âбþ¤¹¤ë¥«¡¼¥É¤Î¥«¥é¥à¤Ï¶õ¤Ç¤¢¤ë¡£ awk¥×¥í¥°¥é¥à¤Ï¤½¤ÎÍͤʥǡ¼¥¿¤ò½èÍý¤¹¤ë¤¿¤á¤Ë¡¢ FIELDWIDTHS µ¡Ç½¤ò»È¤Ã¤Æ¥Ç¡¼¥¿¤òñ½ã¤ËÆÉ¤à¤³¤È¤¬¤Ç¤­¤ë (¤â¤Á¤í¤ó¡¢¥«¡¼¥É¥ê¡¼¥À¡¼ÉÕ¤­¤Î¥·¥¹¥Æ¥à¤Çgawk¤òư¤«¤¹¤è¤¦¤Ë¤¹¤ë¤Î¤ÏÊ̤ÎÏäÀ!)¡£

FS¤Ø¤ÎÂåÆþ¤Ï¡¢ºÆÅÙFS¤Ë¤è¤ë¥Õ¥£¡¼¥ë¥Éʬ³ä¤ògawk¤Ë »Ø¼¨¤¹¤ë¡£`FS = FS'¤Ï¤³¤ì¤ò¸½ºß¤ÎFS¤ÎÃͤòÃΤ뤳¤È¤Ê¤·¤Ë ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£¥Õ¥£¡¼¥ë¥Éʬ³ä¤¬¤É¤Î¼ï¤Î¤â¤Î¤Ç¹Ô¤ï¤ì¤Æ¤¤¤ë¤«¤Ï PROCINFO["FS"]¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤ÆÃΤ뤳¤È¤¬¤Ç¤­¤ë (see section ¾ðÊó¤òÅÁ㤹¤ëÁȤ߹þ¤ßÊÑ¿ô)¡£ Ä̾ï¤Î¥Õ¥£¡¼¥ë¥Éʬ³ä¤¬¹Ô¤ï¤ì¤Æ¤¤¤ì¤Ð¤½¤ÎÃͤÏ"FS"¤Ç¤¢¤ê¡¢ ¸ÇÄêĹ¤Î¥Õ¥£¡¼¥ë¥Éʬ³ä¤¬¹Ô¤ï¤ì¤Æ¤¤¤ì¤Ð"FIELDWIDTHS"¤¬ÃͤȤʤë:

 
if (PROCINFO["FS"] == "FS")
    Ä̾ï¤Î¥Õ¥£¡¼¥ë¥Éʬ³ä …
else
    ¸ÇÄêĹ¥Õ¥£¡¼¥ë¥Éʬ³ä   

¤³¤Î¾ðÊó¤Ï¡¢´ö¤Ä¤«¤Î¥ì¥³¡¼¥É¤òÆÉ¤ß¼è¤ê¡¢¤½¤Î¸å¤Ç¸µ¤ÎÀßÄê¤ËÌ᤹¤è¤¦¤Ê FS¤äFIELDWIDTHS¤ò°ì»þŪ¤ËÊѹ¹¤¹¤ëɬÍפ¬¤¢¤ë ´Ø¿ô¤òµ­½Ò¤¹¤ë¤È¤­¤ËÊØÍø¤Ç¤¢¤ë(¤½¤Î¤è¤¦¤Ê´Ø¿ô¤ÎÎã¤Ï see section Reading the User Database ¤Ë¤¢¤ë)¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.7 Ê£¿ô¹Ô¥ì¥³¡¼¥É

°ìÉô¤Î¥Ç¡¼¥¿¥Ù¡¼¥¹¤Ç¤Ï¡¢°ì¤Ä¤Î¾ðÊó¤Î¥¨¥ó¥È¥ê¤ò°ì¹Ô¤ÇÊÝ»ý¤Ç¤­¤Ê¤¤¡£ ¤³¤ÎÍͤʾì¹ç¤ËÊ£¿ô¹Ô¥ì¥³¡¼¥É¤ò»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ì¤ò¹Ô¤¦ºÇ½é¤Î¥¹¥Æ¥Ã¥×¤Ï¥Ç¡¼¥¿¥Õ¥©¡¼¥Þ¥Ã¥È¤ÎÁªÂò¤Ç¤¢¤ë¡£

°ì¤Ä¤Î¼êÃʤȤ·¤Æ¤Ï¡¢¥ì¥³¡¼¥É¤òʬ³ä¤¹¤ë¤Î¤Ë¤¢¤Þ¤ê»È¤ï¤ì¤Ê¤¤¤è¤¦¤Ê¥­¥ã¥é¥¯¥¿¤« ʸ»úÎó¤ò»È¤¦¡£¤È¤¤¤¦¤³¤È¤¬¤¢¤ë¡£ Î㤨¤Ð¥Õ¥©¡¼¥à¥Õ¥£¡¼¥É¤Î¥³¡¼¥É (awk¤Ç¤ÏC¤Î¤è¤¦¤Ë¡¢`\f'¤Èµ­½Ò¤¹¤ë) ¤ò¥Õ¥¡¥¤¥ë¤ò¥Ú¡¼¥¸¤ò°ì¤Ä¤Î¥ì¥³¡¼¥É¤È¤·¤ÆÊ¬³ä¤¹¤ë¤¿¤á¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤ë¤À¤í¤¦¡£ ¤½¤¦¤¹¤ë¤Ë¤ÏÊÑ¿ôRS ¤Ë"\f" (¥Õ¥©¡¼¥à¥Õ¥£¡¼¥É¥­¥ã¥é¥¯¥¿¤òÊÝ»ý¤¹¤ëʸ»úÎó)¤ò¥»¥Ã¥È¤¹¤ì¤Ð¤è¤¤¡£ ¾¤Î¡¢¥ì¥³¡¼¥ÉÃæ¤Î¥Ç¡¼¥¿¤Î°ìÉôʬ¤È¤·¤ÆÆ±¤¸ÄøÅÙ¤Ë ¤¢¤Þ¤ê»È¤ï¤ì¤Æ¤¤¤Ê¤¤¥­¥ã¥é¥¯¥¿¤ò»È¤¦¤³¤È¤â¤Ç¤­¤ë¤À¤í¤¦

¾¤Î¤ä¤êÊý¤È¤·¤Æ¤Ï¶õ¹Ô¤Ç¥ì¥³¡¼¥É¤òʬ³ä¤¹¤ë¤È¤¤¤¦¤â¤Î¤¬¤¢¤ë¡£ ÆÃÊ̤ʾì¹ç¤È¤·¤Æ¡¢¶õʸ»úÎó¤òRS¤Ë¥»¥Ã¥È¤¹¤ë¤È¡¢ ¤½¤ì¤Ï¥ì¥³¡¼¥É¤Î¶èÀÚ¤ê¤È¤·¤Æ°ì¹Ô°Ê¾å¤Î¶õ¹Ô¤ò¤Ç¥ì¥³¡¼¥É¤òʬ³ä¤¹¤ë¤È¤¤¤¦»ö¤ò¼¨¤¹¡£ ¤â¤·¡¢RS¤Ë¶õʸ»úÎó¤ò¥»¥Ã¥È¤¹¤ë¤È¡¢¥ì¥³¡¼¥É¤Ï¾ï¤ËºÇ½é¤Î¶õ¹Ô¤Ë ½Ð²ñ¤Ã¤¿¤È¤³¤í¤Ç½ª¤ï¤ë¡£ ¤½¤·¤Æ¡¢¼¡¤Î¥ì¥³¡¼¥É¤Ï¶õ¹Ô¤Ç¤Ê¤¤¹Ô¤¬¤­¤¿¤È¤³¤í¤Ç¥¹¥¿¡¼¥È¤¹¤ë¡£ ¤É¤ì¤À¤±¶õ¹Ô¤¬Â³¤¤¤Æ¤¤¤ë¤Î¤«¤Ï´Ø·¸¤Ê¤¯¡¢ ñ¤Ë°ì¤Ä¤Î¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤ÆÇ§¼±¤µ¤ì¤ë (¶õ¹Ô¤Ï´°Á´¤Ë¶õ¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£¶õÇò¤Î¤ß¤«¤é¤Ê¤ë¹Ô¤Ï´Þ¤Þ¤ì¤Ê¤¤)¡£

`RS = ""' ¤È¤·¤¿¤È¤­¤ÈƱ¤¸¸ú²Ì¤ò"\n\n+"¤òRS¤Ë ¥»¥Ã¥È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤ÆÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ÎÀµµ¬É½¸½¤Ï¥ì¥³¡¼¥É¤Î½ªÃ¼¤Ë¤¢¤ë²þ¹Ô¤Ë¥Þ¥Ã¥Á¤·¡¢ °ì¹Ô°Ê¾å¤Î¶õÇò¹Ô¤¬¥ì¥³¡¼¥É¤Î¸å¤Ë³¤¯¡£ ¤½¤ì¤Ë²Ã¤¨¤Æ¡¢Àµµ¬É½¸½¤Ï¾ï¤Ë¥Þ¥Ã¥Á¤¹¤ëºÇĹ¤Î¥Ñ¥¿¡¼¥ó¤òÁªÂò¤¹¤ë (see section ¤É¤Î¤¯¤é¤¤¥Æ¥­¥¹¥È¤¬¥Þ¥Ã¥Á¤¹¤ë¤«?)¡£ ¤·¤¿¤¬¤Ã¤Æ¼¡¤Î¥ì¥³¡¼¥É¤Ï¶õ¹Ô¤Ç¤Ê¤¤¹Ô¤¬¤¯¤ë¤Þ¤Ç¥¹¥¿¡¼¥È¤·¤Ê¤¤¡£ ¤É¤ì¤À¤±¶õ¹Ô¤¬Â³¤¤¤Æ¤¢¤ë¤«¤Ï´Ø·¸¤Ê¤¯¡¢Ã±¤Ë°ì¤Ä¤Î¥ì¥³¡¼¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤ÆÇ§¼±¤µ¤ì¤ë

(d.c.) `RS = ""'¤È`RS = "\n\n+"'¤Ë¤Ï½ÅÍפʰ㤤¤¬¤¢¤ë¡£ ºÇ½é¤Î¤â¤Î¤Ï¡¢ ÆþÎϥǡ¼¥¿¥Õ¥¡¥¤¥ëÃæ¤ÎÀèÆ¬¤Ë¤¢¤ë²þ¹Ô¤Ï̵»ë¤µ¤ì¡¢ ºÇ¸å¤Î¥ì¥³¡¼¥É¤Î¸å¤Ë¶õ¹Ô¤¬¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ºÇ¸å¤Î²þ¹Ô¤¬¥ì¥³¡¼¥É¤«¤éÇí¤®¼è¤é¤ì¤ë¡£ ÆóÈÖÌܤΤâ¤Î¤Ç¤Ï¡¢¤³¤Î¤è¤¦¤ÊÆÃ¼ì¤Ê½èÍý¤Ï¹Ô¤ï¤ì¤Ê¤¤(d.c.)

¤³¤³¤Þ¤Ç¤ÇÆþÎϤ¬¥ì¥³¡¼¥É¤Ëʬ³ä¤µ¤ì¤¿¡£ ÂèÆó¤Î¥¹¥Æ¥Ã¥×¤Ï¥ì¥³¡¼¥ÉÃæ¤Î¥Õ¥£¡¼¥ë¥É¤ò¤É¤¦Ê¬³ä¤¹¤ë¤«¡¢¤È¤¤¤¦»ö¤Ç¤¢¤ë¡£ ¥Õ¥£¡¼¥ë¥É¤òʬ³ä¤¹¤ëÊ̤Τä¤êÊý¤È¤·¤Æ¤Ï¡¢ Ä̾ï¤ÎÊýË¡¤Ç³Æ¹Ô¤ò¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤¹¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤ÏÆÃ¼ìµ¡Ç½¤Î·ë²Ì¡¢¥Ç¥Õ¥©¥ë¥È¤ÇÀ¸¤¸¤ë¤³¤È¤Ç¤¢¤ë¡£ RS ¤Ë¶õʸ»úÎó¤¬ÀßÄꤵ¤ì¤Æ¤¤¤Æ¡¢¤«¤Ä¡¢FS¤¬ ñ°ì¥­¥ã¥é¥¯¥¿¤Ç¤¢¤ë¤È¤­ ²þ¹Ô¤Ï¾ï¤Ë¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤ÆÆ°ºî¤¹¤ë¡£ ¤³¤ì¤Ï¡¢ FS¤ËÀßÄꤵ¤ì¤Æ¤¤¤ëÃͤˤè¤ë¥Õ¥£¡¼¥ë¥Éʬ³ä¤Ë²Ã¤¨¤é¤ì¤ë·Á¤Ç¹Ô¤ï¤ì¤ë (19)¡£

¤³¤ÎÆÃÊ̤ÊÎã³°¤ò¼è¤êÆþ¤ì¤ë¤³¤È¤Ë¤Ê¤Ã¤¿¸µ¡¹¤Îưµ¡¤Ï¡¢ ¥Ç¥Õ¥©¥ë¥È¤Î¾ì¹ç¤Ë»È¤¤°×¤¤Æ°ºî¤ò¤¹¤ë¤è¤¦¤Ë¤¹¤ë¤¿¤á¤Ç¤¢¤ë (i.e., FS == " ")¡£ ¤³¤Îµ¡Ç½¤Ï¡¢¥æ¡¼¥¶¡¼¤¬ËÜÅö¤Ï²þ¹Ô¤ò¥Õ¥£¡¼¥ë¥Éʬ³ä¤Î¤¿¤á¤Î¥­¥ã¥é¥¯¥¿¤È¤·¤Æ »È¤¤¤¿¤¯¤Ê¤¤¤È¤­¤Ë¡¢¤½¤ì¤òËɤ°¼êÃʤ¬¤Ê¤¤¤Î¤ÇÌäÂê¤È¤Ê¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢ split´Ø¿ô¤ò»È¤Ã¤Æ¼êư¤Çʬ³ä¤ò¹Ô¤Ê¤¦¤³¤È¤Ç ˾¤à·ë²Ì¤òÆÀ¤ë¤³¤È¤¬¤Ç¤­¤ë (see section ʸ»úÎóÁàºî´Ø¿ô)¡£ ñ°ì¥­¥ã¥é¥¯¥¿¤Î¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ê¤é¡¢ FS¤Ëñ°ì¥­¥ã¥é¥¯¥¿¤òɽ¤¹Àµµ¬É½¸½¤ò³ÊǼ¤¹¤ë¤È¤¤¤¦ ¤ä¤êÊý¤Ç¤³¤ÎÆÃ¼ìµ¡Ç½¤ò²óÈò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤¿¤È¤¨¤Ð¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤Ë¥Ñ¡¼¥»¥ó¥Èµ­¹æ¤ò»È¤Ã¤Æ¤¤¤ë¤Î¤Ê¤é¡¢ `FS = "%"'¤È¤¹¤ëÂå¤ï¤ê¤Ë`FS = "[%]"'¤È¤¹¤ë¤Î¤Ç¤¢¤ë¡£

¤â¤¦°ì¤Ä¤ÎÊýË¡¤Ï°ì¹Ô¤ò°ì¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤È¤·¤Æ½ÐÎϤ¹¤ë¡£¤È¤¤¤¦¤â¤Î¤¬¤¢¤ë¡£ ¤½¤ì¤ò¼Â¹Ô¤¹¤ë¤Ë¤ÏÊÑ¿ôFS ¤Ë "\n"¤È¤¤¤¦Ê¸»úÎó¤ò¥»¥Ã¥È¤¹¤ì¤ÐÎɤ¤ (¤³¤ì¤Ï¡¢°ì¤Ä¤Î²þ¹Ô¤Ë¥Þ¥Ã¥Á¤¹¤ëñ°ì¥­¥ã¥é¥¯¥¿¤Ë¤è¤ë¥»¥Ñ¥ì¡¼¥¿¤Ç¤¢¤ë)¡£ ¤³¤Î¤ä¤êÊý¤ò»È¤Ã¤¿¸½¼ÂŪ¤ÊÎã¤Ï³Æ¥¨¥ó¥È¥ê¤¬¶õ¹Ô¤Çʬ³ä¤µ¤ì¤Æ¤¤¤ë ¥á¥¤¥ê¥ó¥°¥ê¥¹¥È¤À¤í¤¦¡£`addresses'¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë °Ê²¼¤Î¤è¤¦¤Ê·ÁÂ֤Υᥤ¥ê¥ó¥°¥ê¥¹¥È¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£

 
Jane Doe
123 Main Street
Anywhere, SE 12345-6789

John Smith
456 Tree-lined Avenue
Smallville, MW 98765-4321
…
   

¤³¤Î¥Õ¥¡¥¤¥ë¤ò½èÍý¤¹¤ëñ½ã¤Ê¥×¥í¥°¥é¥à¤Ï°Ê²¼¤Î¤è¤¦¤Ê¤â¤Î¤Ç¤¢¤ë:

 
# addrs.awk --- ´Êñ¤Ê¥á¥¤¥ê¥ó¥°¥ê¥¹¥È¥×¥í¥°¥é¥à

# ¥ì¥³¡¼¥É¤Ï¶õ¹Ô¤Ë¤è¤Ã¤ÆÊ¬³ä¤µ¤ì¤ë¡£
# ³Æ¹Ô¤Ï°ì¤Ä¤Î¥Õ¥£¡¼¥ë¥É¡£
BEGIN { RS = "" ; FS = "\n" }

{
      print "Name is:", $1
      print "Address is:", $2
      print "City and State are:", $3
      print ""
}
   

¥×¥í¥°¥é¥à¤ò¼Â¹Ô¤¹¤ë¤È°Ê²¼¤Î¤è¤¦¤Ê·ë²Ì¤¬ÆÀ¤é¤ì¤ë:

 
$ awk -f addrs.awk addresses
-| Name is: Jane Doe
-| Address is: 123 Main Street
-| City and State are: Anywhere, SE 12345-6789
-|
-| Name is: John Smith
-| Address is: 456 Tree-lined Avenue
-| City and State are: Smallville, MW 98765-4321
-|
…
   

See section ¥á¥¤¥ë¤Î¥é¥Ù¥ë¤ò½ÐÎϤ¹¤ë, for a more realistic program that deals with address lists. The following table summarizes how records are split, based on the value of RS:

RS == "\n"

¥ì¥³¡¼¥É¤Ï²þ¹Ô¥­¥ã¥é¥¯¥¿(`\n')¤Çʬ³ä¤µ¤ì¤ë¡£ ¸À¤¤´¹¤¨¤ë¤È¡¢¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î³Æ¹Ô¤¬¶õ¹Ô¤â´Þ¤á¤Æ¡¢ÆÈΩ¤·¤¿¥ì¥³¡¼¥É¤È¤Ê¤ë¡£

RS == Ǥ°Õ¤Î°ì¥­¥ã¥é¥¯¥¿

¥ì¥³¡¼¥É¤Ï»ØÄꤵ¤ì¤¿¥­¥ã¥é¥¯¥¿¤Ë¤è¤êʬ³ä¤µ¤ì¤ë¡£ ¤³¤Î¥­¥ã¥é¥¯¥¿¤¬Ï¢Â³¤·¤Æ¤¤¤ë¾ì¹ç¤Ë¤Ï¡¢¶õ¤Î¥ì¥³¡¼¥É¤ò¶èÀڤäƤ¤¤ë¤È¤ß¤Ê¤µ¤ì¤ë¡£

RS == ""

¶õ¹Ô¤ÎϢ³¤Ë¤è¤Ã¤Æ¥ì¥³¡¼¥É¤òʬ³ä¤¹¤ë¡£²þ¹Ô¤Ï FS¤ËÀßÄꤵ¤ì¤Æ¤¤¤ë¤â¤Î¤Ë²Ã¤¨¤Æ¡¢ ¾ï¤Ë¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤Ê¤ë¡¢¥Õ¥¡¥¤¥ë¤ÎÀèÆ¬¤äËöÈø¤Ë¤¢¤ë²þ¹Ô¤Ï̵»ë¤µ¤ì¤ë¡£

RS == regexp

regexp¤Ë¥Þ¥Ã¥Á¤·¤¿Ê¸»úÎó¤Ë¤è¤Ã¤Æ¥ì¥³¡¼¥É¤¬Ê¬³ä¤µ¤ì¤ë¡£ ÀèÆ¬¤äËöÈø¤Ë¤¢¤ëregexp¤Ï¶õ¥ì¥³¡¼¥É¤ò¶èÀÚ¤ë¤È¤ß¤Ê¤µ¤ì¤ë (¤³¤ì¤Ïgawk¤Î³ÈÄ¥µ¡Ç½¤Ç¤¢¤ë¡£POSXIɸ½à¤Ç¤Ïµ¬Äꤵ¤ì¤Æ¤¤¤Ê¤¤)¡£

¤¹¤Ù¤Æ¤Î¥±¡¼¥¹¤Ë¤ª¤¤¤Æ¡¢gawk¤ÏRT¤Ë RS¤Ç »ØÄꤵ¤ì¤¿¤â¤Î¤Ë¥Þ¥Ã¥Á¤·¤¿¥Æ¥­¥¹¥È¤ò¥»¥Ã¥È¤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8 getline¤ò»È¤Ã¤¿ÆþÎÏ

¤³¤ì¤Þ¤Ç»äã¤Ïawk¤Î¼çÆþÎÏ¥¹¥È¥ê¡¼¥à¤«¤éÆþÎϥǡ¼¥¿¤òÆÀ¤Æ¤¤¤¿¡£ ¤½¤ì¤Ïɸ½àÆþÎÏ(Ä̾ï¤Ï¥¿¡¼¥ß¥Ê¥ë¡¢¤È¤­¤È¤·¤ÆÂ¾¤Î¥×¥í¥°¥é¥à¤Î½ÐÎÏ) ¤ä¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤷ¤¿¥Õ¥¡¥¤¥ë¤Ç¤¢¤Ã¤¿¡£ awk¸À¸ì¤Ïgetline¤È¸Æ¤Ð¤ì¤ëÆÃ¼ì¤ÊÁȹþ¤ß¥³¥Þ¥ó¥É¤ò»ý¤Ã¤Æ¤ª¤ê¡¢ ¤³¤ì¤ÏÌÀ³Î¤ËÀ©¸æ¤µ¤ì¤¿¸µ¤Ç¤ÎÆþÎÏÆÉ¤ß¼è¤ê¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£

getline¥³¥Þ¥ó¥É¤ÏÈó¾ï¤ËÊ£»¨¤Ç¤¢¤ê¡¢½é¿´¼Ô¤Ï¤¢¤Þ¤ê»È¤¦¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ ¤³¤Î¾Ï¤¬ÆþÎϤ˴ؤ·¤Æ¤Î¤â¤Î¤Ç¤¢¤ë¤Î¤Ç¤³¤³¤Çµ­½Ò¤·¤Æ¤¤¤ë¡£ °Ê²¼¤Ëµó¤²¤ëÎã¤Ï¤Þ¤ÀÀâÌÀ¤µ¤ì¤Æ¤¤¤Ê¤¤¤â¤Î¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë getline¥³¥Þ¥ó¥É¤ÎÀâÌÀ¤Ç¤¢¤ë¡£½¾¤Ã¤Æ¡¢ ¤³¤ÎWeb ¥Ú¡¼¥¸¤Î»Ä¤ê¤ÎÉôʬ¤òÆÉ¤ó¤Çawk¤¬ ¤É¤Î¤è¤¦¤Ëưºî¤¹¤ë¤«¤ÎÃ챤ò½½Ê¬ÆÀ¤¿¸å¤Ë¡¢ ¤³¤³¤ËÌá¤Ã¤Ægetline¥³¥Þ¥ó¥É¤ò³Ø¤Ö¤Î¤¬Îɤ¤¤À¤í¤¦¡£

getline¤Ï¥ì¥³¡¼¥É¤¬¸«ÉÕ¤«¤ì¤Ð1¤òÊÖ¤·¡¢ ¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤Ë㤷¤¿¤È¤­¤Ë¤Ï 0¤òÊÖ¤¹¡£ ¤â¤·¡¢¥ì¥³¡¼¥É¤ÎÆÉ¤ß¹þ¤ß¤Ç¤Ê¤ó¤é¤«¤Î¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤ê¡¢ ¥Õ¥¡¥¤¥ë¤¬¥ª¡¼¥×¥ó¤Ç¤­¤Ê¤«¤Ã¤¿¤ê¤·¤¿¾ì¹ç¤Ë¤Ïgetline¤Ï -1¤òÊÖ¤¹¡£ ¤³¤Î¤È¤­gawk¤ÏERRNO¤È¤¤¤¦ÊÑ¿ô¤Ë ¥¨¥é¡¼¤¬È¯À¸¤·¤¿¤³¤È¤òɽ¤ï¤¹Ê¸»úÎó¤ò¥»¥Ã¥È¤¹¤ë¡£

¼¡¤ÎÎã¤Ç¤Ï¡¢command ¤Ï¥·¥§¥ë¥³¥Þ¥ó¥É¤òɽ¤¹Ê¸»úÎó¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.1 °ú¿ô¤Ê¤·¤Ç getline ¤ò»È¤¦

getline ¥³¥Þ¥ó¥É¤Ï¥«¥ì¥ó¥ÈÆþÎÏ¥Õ¥¡¥¤¥ë¤«¤éÆþÎϤ¹¤ë¤È¤­¤Ë¤Ï °ú¿ô¤ò¾Êά¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£¤³¤Î¾ì¹ç¡¢ÆþÎϥ쥳¡¼¥É¤Ï¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤µ¤ì¤ë¡£ ¤³¤Î getline ¤Î»È¤¤Êý¤Ï¡¢¥«¥ì¥ó¥ÈÆþÎϥ쥳¡¼¥É¤ËÂФ¹¤ë½èÍý¤Ï½ª¤ï¤Ã¤¿¤¬¡¢ ²¿¤«ÆÃÊ̤ʽèÍý¤ò¼¡¤Î¥ì¥³¡¼¥É¤ËÂФ·¤Æ¤½¤Î»þÅÀ¤Ç½èÍý¤ò¹Ô¤¤¤¿¤¤¡¢ ¤È¤¤¤¦¤È¤­¤ËÊØÍø¤Ç¤¢¤ë¡£¤¿¤È¤¨¤Ð

 
{
     if ((t = index($0, "/*")) != 0) {
          # value of `tmp' will be "" if t is 1
          tmp = substr($0, 1, t - 1)
          u = index(substr($0, t + 2), "*/")
          while (u == 0) {
               if (getline <= 0) {
                    m = "unexpected EOF or error"
                    m = (m ": " ERRNO)
                    print m > "/dev/stderr"
                    exit
               }
               t = -1
               u = index($0, "*/")
          }
          # */¤¬¥Õ¥¡¥¤¥ë¤ÎËöÈø¤Ë¤¢¤ë¤È¤­
          # substr¤ò´Þ¤à¼°¤Ï""¤È¤Ê¤ë
          $0 = tmp substr($0, u + 2)
     }
     print $0
}
   

¤³¤Îawk¥×¥í¥°¥é¥à¤ÏÆþÎϤ«¤é`/* ... */'¤È¤¤¤¦C¥¹¥¿¥¤¥ë¤Î¥³¥á¥ó¥È¤ò¼è¤ê½ü¤¯¡£ `print $0'¤ò¾¤Îʸ¤ËÃÖ¤­´¹¤¨¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ ¤è¤êÊ£»¨¤Ê½èÍý¤ò¥³¥á¥ó¥È¥¢¥¦¥È¤µ¤ì¤¿ÆþÎϤËÂФ·¤Æ¡¢ ¤¢¤ëÀµµ¬É½¸½¤Ë¥Þ¥Ã¥Á¤¹¤ë¤«¤É¤¦¤«¤òõ¤¹¤Ê¤É¤·¤Æ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë (¤³¤Î¥×¥í¥°¥é¥à¤Ë¤Ï±£¤µ¤ì¤¿ÌäÂêÅÀ¤¬¤¢¤ë--- ¤½¤ì¤Ï°ì¤Ä¤Î¥³¥á¥ó¥È½ªÎ»¤È³«»Ï¤È¤¬Æ±¤¸¹Ô¤Ë¤¢¤ë¤È¤­¤Ë¤¦¤Þ¤¯Æ¯¤«¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë)¡£

¤³¤Î·Á¼°¤Îgetline¥³¥Þ¥ó¥É¤ÏNF¡¢ NR¡¢ FNR¡¢$0¤Ë¿·¤·¤¤Ãͤò¥»¥Ã¥È¤¹¤ë¡£

NOTE: ¿·¤·¤¤$0¤ÎÃͤϡ¢¸å¤Ë³¤¤¤Æ¤¢¤ë¥ë¡¼¥ë¤Î¥Ñ¥¿¡¼¥óÉô¤È¥Æ¥¹¥È¤¹¤ë¤¿¤á¤Ë»È¤ï¤ì¤ë¡£ ¤³¤Î¤È¤­¡¢¸µ¡¹¤Î$0¤ÎÃͤϼº¤ï¤ì¤ë¡£ ÂоÈŪ¤Ë nextʸ¤Ç¿·¤·¤¤¥ì¥³¡¼¥É¤òÆÉ¤ó¤À¤È¤­¤Ï¡¢ ¨ºÂ¤ËÄ̾ïÄ̤ê¤Î½èÍý¤ò»Ï¤á¡¢ ¥×¥í¥°¥é¥à¤ÎºÇ½é¤Î¥ë¡¼¥ë¤«¤é½èÍý¤ò»Ï¤á¤ë¡£See section next ʸ.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.2 ÊÑ¿ô¤Ëgetline¤Î·ë²Ì¤ò³ÊǼ¤¹¤ë

`getline var' ¤ò»È¤Ã¤Æ¡¢ awk¤ÎÆþÎϤ«¤é¤Î ¼¡¤Î¥ì¥³¡¼¥É¤òÊÑ¿ôvar¤ËÆÉ¤ß¹þ¤à¤³¤È¤¬¤Ç¤­¤ë¡£Â¾¤Î½èÍý¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£ ¤³¤Î·Á¼°¤Îgetline¤Ïawk¤ÎÆÉ¹þ¤ß-¥Á¥§¥Ã¥¯-¥ë¡¼¥ë¤Î ¥ë¡¼¥×¤Ë¤Ï¸«¤Ä¤«¤é¤Ê¤¤¤ÇÊÑ¿ô¤Ë¹Ô¤òÆÉ¤ß¹þ¤ó¤Ç³ÊǼ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ °Ê²¼¤ÎÎã¤ÏÆó¹Ô¤´¤È¤Ë¤½¤ÎÆó¹Ô¤òÆþ¤ìÂØ¤¨¤ë:

 
{
     if ((getline tmp) > 0) {
          print tmp
          print $0
     } else
          print $0
}
   

ÆþÎϤȤ·¤Æ°Ê²¼¤Î¤â¤Î¤¬¤¢¤Ã¤¿¤È¤¹¤ë¤È:

 
wan
tew
free
phore
   

·ë²Ì¤Ï¼¡¤Î¤è¤¦¤Ë¤Ê¤ë:

 
tew
wan
phore
free
   

¤³¤³¤Ç¤Ïgetline´Ø¿ô¤ÏÊÑ¿ôNR¤ÈFNR¤Ë (¤â¤Á¤í¤ó var¤Ë¤â)¥»¥Ã¥È¤¹¤ëÌÜŪ¤Ç»È¤ï¤ì¤Æ¤¤¤ë¡£ ¥ì¥³¡¼¥É¤Ï¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤Ï¤µ¤ì¤º¡¢¤·¤¿¤¬¤Ã¤Æ¥Õ¥£¡¼¥ë¥É¤ÎÃÍ($0 ¤â´Þ¤á¤Æ)¤È¡¢ NF¤ÎÃͤÏÊѹ¹¤µ¤ì¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.3 getline¤ò»È¤Ã¤¿¥Õ¥¡¥¤¥ë¤«¤é¤ÎÆþÎÏ

`getline < file'¤ò»È¤Ã¤Æ¡¢ ¼¡¤Î¥ì¥³¡¼¥É¤òfile¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤«¤éÆÉ¤ß¹þ¤à¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤Îfile¤Ï¥Õ¥¡¥¤¥ë̾¤È¤·¤ÆÆÃÄê¤Ç¤­¤ëʸ»úÎó¤ÎÃͤò»ý¤Ã¤¿¼°¤Ç¤¢¤ë¡£ `< file'¤Ï°Û¤Ê¤Ã¤¿¾ì½ê¤«¤éľÀÜÆþÎϤò¹Ô¤¦¤Î¤Ç¥ê¥À¥¤¥ì¥¯¤È¸Æ¤Ð¤ì¤ë¡£ Î㤨¤Ð¡¢¼¡¤Î¥×¥í¥°¥é¥à¤Ï¥ì¥³¡¼¥É¤ÎÆþÎϤò¡¢ ¥«¥ì¥ó¥ÈÆþÎϤ«¤é¤Î¥ì¥³¡¼¥É¤ÎºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤¬10¤Ç¤¢¤Ã¤¿¤È¤­¤Ë¡¢ `secondary.input'¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤«¤é¹Ô¤¦:

 
{
    if ($1 == 10) {
         getline < "secondary.input"
         print
    } else
         print
}
   

Ä̾ï¤ÎÆþÎÏ¥¹¥È¥ê¡¼¥à¤ò»È¤ï¤Ê¤¤¤Î¤Ç¡¢NR¤ÈFNR¤ÎÃͤÏÊѹ¹¤µ¤ì¤Ê¤¤¡£ ¤·¤«¤·¡¢ÆÉ¤ß¹þ¤Þ¤ì¤¿¥ì¥³¡¼¥É¤ÏÄ̾ï¤Î¥ë¡¼¥ë¤Ë½¾¤Ã¤Æ¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤µ¤ì¡¢ $0 ¤ª¤è¤Ó¡¢¤½¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¤ÎÃͤÏÊѹ¹¤µ¤ì¤ë¡£ ¤â¤Á¤í¤óNF¤ÎÃͤ⤽¤ÎÎã³°¤Ç¤Ï¤Ê¤¤¡£

POSIX¤Ë½¾¤¨¤Ð¡¢`getline < expression' ¤Ï expressionÃæ¤Ë `$'°Ê³°¤Î±é»»»Ò¤¬³ç¸Ì¤Ë°Ï¤Þ¤ì¤Ê¤¤¤Ç¸½¤ì¤¿¤È¤­¤Ë¤ÏÛ£Ëæ¤È¤Ê¤ë¡£ ¤¿¤È¤¨¤Ð`getline < dir "/" file' ¤ÏÏ¢Àܱ黻»Ò¤¬³ç¸Ì¤Ë°Ï¤Þ¤ì¤º¤Ë¸½¤ì¤Æ¤ª¤ê¡¢ Û£Ëæ¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£¤½¤·¤Æ¤³¤ì¤Ï¡¢Â¾¤Îawk½èÍý·Ï¤Ç¤â ÌäÂê¤Ê¤¯»È¤¨¤ë¤è¤¦¤Ë¤·¤¿¤¤¤Î¤Ê¤é¡¢ `getline < (dir "/" file)' ¤Èµ­½Ò¤¹¤Ù¤­¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.4 getline¤ò»È¤Ã¤Æ¥Õ¥¡¥¤¥ë¤«¤éÊÑ¿ô¤Ø³ÊǼ

`getline var < file'¤ò»È¤Ã¤Æ¥Õ¥¡¥¤¥ëfile¤«¤éÆÉ¤ß¹þ¤ß¡¢ ÊÑ¿ôvar¤Ë¤½¤ì¤ò¥»¥Ã¥È¤¹¤ë¡£ Àè¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢ file¤ÏÆÉ¤ß¹þ¤ß¤Ë»ÈÍѤ¹¤ë¥Õ¥¡¥¤¥ë¤ò»ØÄꤹ¤ëʸ»úÎ󼰤Ǥ¢¤ë¡£

¤³¤Î»È¤¤Êý¤Îgetline¤Ï¤É¤ÎÁȤ߹þ¤ßÊÑ¿ô¤âÊѹ¹¤»¤º¡¢ ¥ì¥³¡¼¥É¤Î¥Õ¥£¡¼¥ë¥É¤Ø¤Îʬ²ò¤â¹Ô¤ï¤ì¤Ê¤¤¡£¤¿¤Àñ¤Ëvar¤À¤±¤¬ÊѤï¤ë¡£ Î㤨¤Ð¡¢¼¡¤Î¥×¥í¥°¥é¥à¤Ç¤ÏÆþÎÏ¥Õ¥¡¥¤¥ë¤ò½ÐÎϤ¹¤ë¤¬¡¢ ÆþÎÏÃæ¤Ë `@include filename'¤È½ñ¤«¤ì¤¿¥ì¥³¡¼¥É¤¬¤¢¤Ã¤¿¤È¤­¤Ë¡¢ ¤½¤ÎÍͤʥ쥳¡¼¥É¤òfilename¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤ÇÃÖ¤­´¹¤¨¤ë:

 
{
     if (NF == 2 && $1 == "@include") {
          while ((getline line < $2) > 0)
               print line
          close($2)
     } else
          print
}
   

¤³¤ì¤ÏŸ³«¤¹¤ëÆþÎÏ¥Õ¥¡¥¤¥ë¤Î̾Á°¤¬¥×¥í¥°¥é¥àÃæ¤Ë½ñ¤«¤ì¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ¡£ ¤³¤ÎÎã¤Ç¤Ï¡¢`@include'¤¬¤¢¤ë¹Ô¤ÎÆóÈÖÌܤΥե£¡¼¥ë¥É¤Ç»ØÄꤵ¤ì¤ë ¥Õ¥¡¥¤¥ë¤«¤é¥Ç¡¼¥¿¤ò»ý¤Ã¤Æ¤¯¤ë

close´Ø¿ô¤ÏÆþÎÏÃæ¤Ë¤¢¤ë`@include'¤Ç»ØÄꤵ¤ì¤ë¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë Ʊ¤¸¤â¤Î¤¬ÆóÅÙ°Ê¾å»ØÄꤵ¤ì¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤Ã¤¿¤È¤·¤Æ¤â¤­¤Á¤ó¤Èưºî¤¹¤ë¤³¤È¤ò Êݾڤ¹¤ë¤¿¤á¤Ë¸Æ¤Ð¤ì¤Æ¤¤¤ë See section Æþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥È¤ò¥¯¥í¡¼¥º¤¹¤ë.

¤³¤Î¥×¥í¥°¥é¥à¤Ç°ì¤Ä·ç¤±¤Æ¤¤¤ë¤Î¤Ï¡¢ ËÜÅö¤Î¥Þ¥¯¥í¥×¥í¥»¥Ã¥µ¤Ç¤Ï¤Ç¤­¤ë¤è¤¦¤Ê¥Í¥¹¥È¤·¤¿ `@include'ʸ(¥¤¥ó¥¯¥ë¡¼¥É¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ë¤¢¤ë `@include') ¤ò½èÍý¤Ç¤­¤Ê¤¤¤È¤¤¤¦ÅÀ¤Ç¤¢¤ë¡£ ¥Í¥¹¥È¤·¤¿`@include'ʸ¤ò½èÍý¤Ç¤­¤ë¥×¥í¥°¥é¥à¤Ï See section An Easy Way to Use ¥é¥¤¥Ö¥é¥ê´Ø¿ô.


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.5 Using getline from a Pipe


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.6 getline¤ò»È¤Ã¤¿¥Ñ¥¤¥×¤«¤é¤ÎÆþÎÏ

¥³¥Þ¥ó¥É¤Î½ÐÎϤò¥Ñ¥¤¥×¤òÄ̤¸¤Ægetline¤ò `command | getline' ¤Î¤è¤¦¤Ë»È¤Ã¤Æ¼õ¤±¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¥Ñ¥¤¥×¤Ïñ¤Ë¤¢¤ë¥×¥í¥°¥é¥à¤Î½ÐÎϤò¾¤ÎÆþÎϤ˥ê¥ó¥¯¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£ ¤³¤Î¥±¡¼¥¹¤Ç¤Ï¡¢ command¤È¤¤¤¦Ê¸»úÎó¤Ï¥·¥§¥ë¥³¥Þ¥ó¥É¤È¤·¤Æ¼Â¹Ô¤µ¤ì¡¢ ¤½¤Î½ÐÎϤ¬¥Ñ¥¤¥×¤òÄ̤¸¤Æawk¤ÎÆþÎϤȤµ¤ì¤ë¡£ ¤³¤ÎÎã¤Îgetline¤Ç¤Ï¥Ñ¥¤¥×¤«¤é¥ì¥³¡¼¥É¤òÆÉ¤ß¹þ¤ó¤Ç¤¤¤ë¡£ Î㤨¤Ð¼¡¤Î¥×¥í¥°¥é¥à¤ÏÆþÎϤò½ÐÎϤ˥³¥Ô¡¼¤¹¤ë¤¬¡¢ ¤¢¤ë¹Ô¤¬`@execute' ¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤ë¤È¡¢ ¤½¤Î¹Ô¤Î`@execute'¤Ë³¤¯Éôʬ¤ò¥·¥§¥ë¤Î¥³¥Þ¥ó¥É¤È¤·¤Æ¼Â¹Ô¤·¤Æ¡¢ ÆþÎϤò¤½¤Î·ë²Ì¤ËÃÖ¤­´¹¤¨¤ë:

 
{
     if ($1 == "@execute") {
          tmp = substr($0, 10)
          while ((tmp | getline) > 0)
               print
          close(tmp)
     } else
          print
}
   

close ´Ø¿ô¤ÏÆþÎÏÃæ¤Î`@execute'¤Î¤¢¤ë¹Ô¤Ç»ØÄꤵ¤ì¤ë¥³¥Þ¥ó¥É¤Ë Æó¤Ä°Ê¾å¤ÎƱ°ì¤Î¥³¥Þ¥ó¥É¤¬»ØÄꤵ¤ì¤¿¤È¤­¤Ë¡¢ °ì²óËè¤Ë¤½¤Î¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ëÍͤˤµ¤»¤ë¤¿¤á¤Ë¸Æ¤Ó½Ð¤µ¤ì¤ë¡£ See section Æþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥È¤ò¥¯¥í¡¼¥º¤¹¤ë. ÆþÎϤȤ·¤Æ°Ê²¼¤Î¤â¤Î¤òÍ¿¤¨¤ë:

 
foo
bar
baz
@execute who
bletch
   

¥×¥í¥°¥é¥à¤Î½ÐÎϤϤ³¤¦¤Ê¤ë:

 
foo
bar
baz
arnold     ttyv0   Jul 13 14:22
miriam     ttyp0   Jul 13 14:23     (murphy:0)
bill       ttyp1   Jul 13 14:23     (murphy:0)
bletch
   

¤³¤Î¥×¥í¥°¥é¥à¤Ïwho¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤·¡¢·ë²Ì¤ò½ÐÎϤ¹¤ë (¤â¤·¤³¤Î¥×¥í¥°¥é¥à¤¬¤ä¤Ã¤Æ¤¤¤ë¤³¤È¤ò¼«Ê¬¤Ç¤ä¤í¤¦¤È¤·¤¿¤é¡¢ ¤½¤Î·ë²Ì¤Ï°Û¤Ê¤Ã¤¿¤â¤Î¤È¤Ê¤ë¤À¤í¤¦¡£Ã¯¤¬¥·¥¹¥Æ¥à¤Ë¥í¥°¥¤¥ó¤·¤Æ¤¤¤ë¤«¤ÇÊѤï¤ë¤«¤é¤À)¡£

¤³¤Î·Á¼°¤Îgetline¤Ç¤Ï¡¢¥ì¥³¡¼¥É¤ò¥Õ¥£¡¼¥ë¥É¤Ëʬ³ä¤·¡¢ NF¤ò¥»¥Ã¥È¤·¤Æ$0¤òºÆ·×»»¤¹¤ë¡£ ¤³¤Î¤È¤­¡¢NR ¤ÈFNR¤ÏÊѹ¹¤·¤Ê¤¤¡£

POSIX¤Ë½¾¤¨¤Ð¡¢`expression | getline'¤Ï expression¤¬`$'°Ê³°¤Î¥«¥Ã¥³¤¬¤Ä¤¤¤Æ¤¤¤Ê¤¤±é»»»Ò¤ò´Þ¤ó¤Ç¤¤¤ë ¤È¤­¤ËÛ£Ëæ¤Ç¤¢¤ë --- ¤¿¤È¤¨¤Ð¡¢`"echo " "date" | getline'¤Ï ¥«¥Ã¥³ÉÕ¤±¤µ¤ì¤Æ¤¤¤Ê¤¤±é»»»Ò¤ò´Þ¤ó¤Ç¤¤¤ë¤Î¤ÇÛ£Ëæ¤Ç¤¢¤ë¡£ ¾¤Îawk¤Î¼ÂÁõ¤Ç¤âư¤¯¤è¤¦¤Ë¤·¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢ `("echo " "date") | getline'¤Î¤è¤¦¤Ëµ­½Ò¤¹¤Ù¤­¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.7 Using getline into a Variable from a Pipe


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.8 getline¤ò»È¤Ã¤Æ¥Ñ¥¤¥×¤«¤é¤ÎÆâÍÆ¤òÊÑ¿ô¤Ë³ÊǼ¤¹¤ë

`command | getline var'¤ò»È¤Ã¤¿¤È¤­¡¢ command¤Î½ÐÎϤϥѥ¤¥×¤òÄ̤¸¤Ægetline¤ËÅϤꡢ ¤µ¤é¤ËÊÑ¿ôvar ¤Ë³ÊǼ¤µ¤ì¤ë¡£ Î㤨¤Ð¼¡¤Ëµó¤²¤ë¥×¥í¥°¥é¥à¤Ç¤Ï date ¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤ò»ÈÍѤ·¤Æ ÆüÉդȻþ¹ï¤òÆÉ¤ß¹þ¤ß¡¢¤½¤ì¤òcurrent_time¤È¤¤¤¦ÊÑ¿ô¤Ë³ÊǼ¤·¡¢ ¤µ¤é¤Ëɽ¼¨¤·¤Æ¤¤¤ë:

 
BEGIN {
     "date" | getline current_time
     close("date")
     print "Report printed on " current_time
}
   

¤³¤Î»È¤¤Êý¤Îgetline¤Ç¤Ï¡¢¤É¤ÎÁȤ߹þ¤ßÊÑ¿ô¤âÊѹ¹¤µ¤ì¤º¡¢ ¥ì¥³¡¼¥É¤Î¥Õ¥£¡¼¥ë¥Éʬ³ä¤â¹Ô¤ï¤ì¤Ê¤¤


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.9 getline ¤ò»È¤Ã¤Æ¥³¥×¥í¥»¥¹¤«¤éÆþÎϤ¹¤ë

getline¤ò»È¤Ã¤¿¥Ñ¥¤¥×¤«¤é¤ÎÆþÎϤϰìÊý¸þ¤Î¥ª¥Ú¥ì¡¼¥·¥ç¥ó¤Ç¤¢¤Ã¤¿¡£ `command | getline'¤Çµ¯Æ°¤·¤¿¥³¥Þ¥ó¥É¤Ï ¤¢¤Ê¤¿¤Îawk¥×¥í¥°¥é¥à¤ËÂФ·¤Æ¤À¤±¥Ç¡¼¥¿¤òÁ÷¤ë¡£

È¿ÂФˡ¢ÊÌ¤Î¥×¥í¥°¥é¥à¤Ë½èÍý¤¹¤ë¤¿¤á¤Î¥Ç¡¼¥¿¤òÁ÷¤Ã¤Æ¤½¤Î·ë²Ì¤ò ÆÉ¤ß¼è¤ê¤¿¤¤¤È¤¤¤¦¤³¤È¤¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ gawk¤Ï¥³¥×¥í¥»¥¹(coprocess)¤òµ¯Æ°¤·¤Æ ÁÐÊý¸þ¤ÎÄÌ¿®¤ò²Äǽ¤Ë¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ì¤Ï`|&'±é»»»Ò¤ò»È¤Ã¤Æ¹Ô¤¦¡£ ŵ·¿Åª¤Ë¤Ï¡¢°Ê²¼¤ÎÎã¤Î¤è¤¦¤Ë ¥Ç¡¼¥¿¤ò¥³¥×¥í¥»¥¹¤Ë½ñ¤­¹þ¤ó¤Ç¤«¤é·ë²Ì¤òÆÉ¤ß¼è¤ë:

 
print "some query" |& "db_server"
"db_server" |& getline
   

¤³¤ì¤ÏÌ䤤¹ç¤ï¤»¤òdb_server¤ËÁ÷¤ê¡¢¤½¤Î¸å¤Ç·ë²Ì¤òÆÉ¤ß½Ð¤·¤Æ¤¤¤ë¡£

NR¤ÈFNR¤ÎÆâÍÆ¤ÏÊѲ½¤·¤Ê¤¤¡£ ¤Ê¤¼¤Ê¤é¼çÆþÎÏ¥¹¥È¥ê¡¼¥à¤Ï»È¤ï¤ì¤Æ¤¤¤Ê¤¤¤«¤é¤À¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢ÆÉ¤ß¼è¤é¤ì¤¿¥ì¥³¡¼¥É¤ÏÄ̾ï¤Î¤ä¤êÊý¤Ë¤·¤¿¤¬¤Ã¤Æ ¥Õ¥£¡¼¥ë¥É¤Ø¤Îʬ³ä¤¬¹Ô¤ï¤ì¤ë¤Î¤Ç¡¢$0¤ä¤½¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¡¢¤½¤·¤Æ NF¤ÎÆâÍÆ¤ÏÊѲ½¤¹¤ë¡£

¥³¥×¥í¥»¥¹¤ÏȯŸŪµ¡Ç½(advanced feature)¤Ç¤¢¤ë¡£ getline¤Ë´Ø¤¹¤ë¥»¥¯¥·¥ç¥ó¤¬¤³¤³¤Ç¤¢¤ë¤Î¤Ç ¤³¤³¤Ç½Ò¤Ù¤Æ¤¤¤ë¡£ ¥³¥×¥í¥»¥¹¤Î¾ÜºÙ¤ÏSee section Two-Way Communications with Another Process


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.10 getline¤ò»È¤Ã¤Æ¥³¥×¥í¥»¥¹¤«¤éÊÑ¿ô¤Ë³ÊǼ¤¹¤ë

`command |& getline var'¤ò»È¤Ã¤¿¤È¤­¡¢ ¥³¥×¥í¥»¥¹ command¤«¤é¤Î½ÐÎϤÏÁÐÊý¸þ¥Ñ¥¤¥×¤òÄ̤¸¤Ægetline¤Ë Á÷¤é¤ì¤Æ¡¢var¤È¤¤¤¦ÊÑ¿ô¤Ë³ÊǼ¤µ¤ì¤ë¡£

¤³¤Î¥Ð¡¼¥¸¥ç¥ó¤Îgetline¤Ç¤Ï¡¢ÁȤ߹þ¤ßÊÑ¿ô¤ÏÊѲ½¤·¤Ê¤¤¤·¡¢ ÆÉ¤ß¹þ¤Þ¤ì¤¿¥ì¥³¡¼¥É¤Î¥Õ¥£¡¼¥ë¥É¤Ø¤Îʬ³ä¤Ï¤µ¤ì¤Ê¤¤¡£ Í£°ìÊѲ½¤¹¤ëÊÑ¿ô¤Ïvar¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.11 Points to Remember About getline


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.12 getline¤Ë´Ø¤·¤Æ³Ð¤¨¤Æ¤ª¤¯¤Ù¤­¤³¤È

°Ê²¼¤Ëµó¤²¤ë¤Î¤Ï¡¢getline¤Ë´Ø¤·¤Æ¿´¤Ë¤È¤É¤á¤Æ¤ª¤¯¤Ù¤­ ¤½¤Î¾¤Î¤³¤È¤Ç¤¢¤ë:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

3.8.13 getline ¤ÎÊѼï¤Î¤Þ¤È¤á

table-getline-variants °Ê²¼¤ËȬ¼ïÎà¤Îgetline¤Î»È¤¤Êý¤È¤½¤ì¤¾¤ì¤Î»È¤¤Êý¤Ç¥»¥Ã¥È¤µ¤ì¤ë Áȹþ¤ßÊÑ¿ô¤ò°ìÍ÷¤Ë¤·¤¿¡£

Variant

Effect

getline

$0, NF, FNR, NR ¤ò¥»¥Ã¥È¤¹¤ë

getline var

var, FNR, NR ¤ò¥»¥Ã¥È¤¹¤ë

getline < file

$0 ¤È NF ¤ò¥»¥Ã¥È¤¹¤ë

getline var < file

var ¤ò¥»¥Ã¥È¤¹¤ë

command | getline

$0 ¤È NF ¤ò¥»¥Ã¥È¤¹¤ë

command | getline var

var ¤ò¥»¥Ã¥È¤¹¤ë

command |& getline

$0 ¤È NF¤ò¥»¥Ã¥È¤¹¤ë¡£¤³¤ì¤Ï gawk ¤Î³ÈÄ¥

command |& getline var

var¤ò¥»¥Ã¥È¤¹¤ë¡£¤³¤ì¤Ï gawk ¤Î³ÈÄ¥

Table 3.1: getline Variants and What They Set


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4. Printing Output

¤â¤Ã¤È¤â¤è¤¯¹Ô¤ï¤ì¤ë¥¢¥¯¥·¥ç¥ó¤Î°ì¤Ä¤Ï¡¢ÆþÎϤΰìÉô¤â¤·¤¯¤ÏÁ´Éô¤ò½ÐÎϤ¹¤ë¤³¤È¤Ç¤¢¤ë¡£ ñ½ã¤Ê½ÐÎϤΤ¿¤á¤Ëprintʸ¤ò»È¤¤¡¢À°·Á¤·¤Æ½ÐÎϤ¹¤ë¤¿¤á¤Ë printfʸ¤ò»È¤¦¡£ ¤³¤Îξ¼Ô¤Ï¤³¤Î¾Ï¤ÇÀâÌÀ¤¹¤ë¡£ printʸ¤Ï½ÐÎϤ¹¤ëÃͤò·×»»¤¹¤ë¤È¤­¤Ë¸Â¤é¤Ê¤¤¡£ ¤·¤«¤·Æó¤Ä¤ÎÎã³°¤¬¤¢¤Ã¤Æ¡¢¤É¤Î¤è¤¦¤Ë½ÐÎϤ¹¤ë¤«¤ò »ØÄꤹ¤ë¤³¤È --- ¤É¤Î¤¯¤é¤¤¤Î¥«¥é¥à¤Ç¤É¤Î¤è¤¦¤Êɽµ­¤Ç(»Ø¿ôɽµ­¤ò»È¤¦¤«Èݤ«) ½ÐÎϤ¹¤ë¤«¤È¤¤¤Ã¤¿ ¤³¤È¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤Ê¤¤(Æó¤Ä¤ÎÎã³°¤Ë¤Ä¤¤¤Æ¤Ïsee section ½ÐÎÏ¥»¥Ñ¥ì¡¼¥¿¤È print¤Î¿ôÃͽÐÎϤòÀ©¸æ¤¹¤ë)¡£ ¤³¤ì¤é¤ò»ØÄꤷ¤Æ½ÐÎϤ¹¤ë¤Ë¤Ï¡¢printfʸ¤¬É¬ÍפȤʤë(see section printf¤ò»È¤Ã¤Æ½ÐÎϤòÀ°¤¨¤ë)¡£

´ðËܤȽñ¼°ÉÕ¤±½ÐÎϤȶ¦¤Ë¡¢¤³¤Î¾Ï¤Ç¤Ï ¥Õ¥¡¥¤¥ë¤ä¥Ñ¥¤¥×¤Ø¤ÎÆþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥È¤ò¥«¥Ð¡¼¤·¡¢ ¤µ¤é¤Ëgawk¤¬ÆâÉôŪ¤Ë½èÍý¤¹¤ë¥Õ¥¡¥¤¥ë̾¤ä ÁȤ߹þ¤ß´Ø¿ôclose¤Ë¤Ä¤¤¤Æ¤âÀâÌÀ¤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.1 print ʸ

printʸ¤Ï½ÐÎϤòñ½ã¤Ë¡¢É¸½àŪ¤Ê½ñ¼°¤Ç¹Ô¤¦¡£ ¥«¥ó¥Þ¤Ç¶èÀÚ¤é¤ì¤¿¥ê¥¹¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë¥Ç¡¼¥¿¤òʸ»úÎó¤È¤¹¤ë¤«¿ôÃͤȤ·¤Æ ½ÐÎϤ¹¤ë¤«¤òÆÃÄê¤Ç¤­¤ë¤À¤±¤Ç¤¢¤ë¡£ ½ÐÎϤϰì¤Ä¤Î¥¹¥Ú¡¼¥¹¤Ç¶èÀÚ¤é¤ì¡¢ºÇ¸å¤Ë²þ¹Ô¤¬²Ã¤¨¤é¤ì¤ë¡£ printʸ¤Ï°Ê²¼¤Î¤è¤¦¤Ê·Á¤Ç»È¤¦:

 
print item1, item2, …
   

¥¢¥¤¥Æ¥à¤Î¥ê¥¹¥È¤Ï¡¢Á´ÂΤò³ç¸Ì¤Ç¤¯¤¯¤ë»ö¤â¤Ç¤­¤ë¡£ ¤³¤Î³ç¸Ì¤Ï¡¢¥¢¥¤¥Æ¥à¤Î¤¤¤º¤ì¤«¤¬´Ø·¸±é»»»Ò`>' ¤ò»È¤Ã¤¿¼°¤Ç¤¢¤ë¾ì¹ç¤Ë¤Ï»È¤¦É¬Íפ¬¤¢¤ë¡£ ¤½¤¦¤·¤Ê¤¤¤È¡¢¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Èº®Æ±¤·¤Æ¤·¤Þ¤¦²ÄǽÀ­¤¬¤¢¤ë¤À¤í¤¦ (see section print ¤ä printf¤Î½ÐÎϤΥê¥À¥¤¥ì¥¯¥È)¡£

½ÐÎϤÎÂоݤȤʤ륢¥¤¥Æ¥à¤Ï¡¢Ê¸»úÎó¤ä¿ôÃÍÄê¿ô¡¢ ($1¤Î¤è¤¦¤Ê)¥«¥ì¥ó¥È¥ì¥³¡¼¥É¤Î¥Õ¥£¡¼¥ë¥É¡¢ÊÑ¿ô¡¢ ¤¢¤ë¤¤¤ÏǤ°Õ¤Îawk¼°¤Ç¤¢¤ë¡£ ¿ôÃͤÏʸ»úÎ󤨤ÈÊÑ´¹¤µ¤ì¤Æ¤«¤é½ÐÎϤµ¤ì¤ë¡£

°ú¿ô¤ò»ý¤¿¤Ê¤¤Ã±½ã¤Ê`print'ʸ¤Ï`print $0'¤ÈÅù²Á¤Ç¤¢¤ê¡¢ ¥«¥ì¥ó¥È¥ì¥³¡¼¥ÉÁ´ÂΤò½ÐÎϤ¹¤ë¡£¶õ¹Ô¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢ `print ""'¤Î¤è¤¦¤Ë¶õʸ»úÎó""¤ò»ØÄꤹ¤ë¡£ ¥Æ¥­¥¹¥È¤Î¤Ò¤È¤«¤¿¤Þ¤ê¤ò½ÐÎϤ¹¤ë¤Ë¤Ï¡¢"Don't Panic"¤Î¤è¤¦¤Ë °ì¥¢¥¤¥Æ¥à¤È¤·¤ÆÊ¸»úÎóÄê¿ô¤ò»È¤¦¡£¥À¥Ö¥ë¥¯¥©¡¼¥È¤ò»È¤¦¤³¤È¤ò˺¤ì¤Æ ¤·¤Þ¤¦¤È¡¢¤½¤Î¥Æ¥­¥¹¥È¤Ïawk¤Î¼°¤È¤·¤Æ°·¤ï¤ì¤Æ ¤¿¤Ö¤ó¥¨¥é¡¼¤Ë¤Ê¤Ã¤Æ¤·¤Þ¤¦¤À¤í¤¦¡£ Ǥ°Õ¤ÎÆó¤Ä¤Î¥¢¥¤¥Æ¥à¤Î´Ö¤Ë¤Ï¤Ò¤È¤Ä¤Î¥¹¥Ú¡¼¥¹¤¬¶´¤Þ¤ë¤³¤È¤ò ¿´¤Ë¤È¤É¤á¤Æ¤ª¤¯¤³¤È¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.2 print ʸ¤ÎÎã

³Æprintʸ¤Ï¾¯¤Ê¤¯¤È¤â°ì¹Ô¤Î½ÐÎϤò¹Ô¤¦¤¬¡¢ °ì¹Ô¤Ë¸Â¤é¤Ê¤¤¡£²þ¹Ô¤ò´Þ¤àʸ»úÎ󤬥¢¥¤¥Æ¥à¤ÎÃͤǤ¢¤Ã¤¿¾ì¹ç¡¢ ¤½¤Î²þ¹Ô¤Ïʸ»úÎó¤Î»Ä¤ê¤ÎÉôʬ¤È¶¦¤Ë½ÐÎϤµ¤ì¤ë¡£ °ì¤Ä¤Îprintʸ¤Ï¤³¤Î¤ä¤êÊý¤ÇǤ°Õ¤Î¹Ô¿ô¤Î½ÐÎϤò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£

°Ê²¼¤Ëµó¤²¤ë¤Î¤Ï²þ¹Ô¤¬Ëä¤á¹þ¤Þ¤ì¤¿Ê¸»úÎó¤Î½ÐÎϤÎÎã¤Ç¤¢¤ë (`\n'¤Ï²þ¹Ô¥­¥ã¥é¥¯¥¿¤òɽ¤¹¤Î¤Ë»È¤Ã¤¿¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Ç¤¢¤ë¡£ see section ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹):

 
$ awk 'BEGIN { print "line one\nline two\nline three" }'
-| line one
-| line two
-| line three
   

¼¡¤ÎÎã¤Ï¥Õ¥¡¥¤¥ë`inventory-shipped'¤Î³ÆÆþÎϥ쥳¡¼¥É¤Î ºÇ½é¤ÎÆó¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤ò¶õÇò¤Ç¶èÀڤäƽÐÎϤ¹¤ë:

 
$ awk '{ print $1, $2 }' inventory-shipped
-| Jan 13
-| Feb 15
-| Mar 15
…
   

print ʸ¤ò»È¤¦¤È¤­¤Ë¤¢¤ê¤¬¤Á¤Ê´Ö°ã¤¤¤Ï¡¢ Æó¤Ä¤Î¥¢¥¤¥Æ¥à¤Î´Ö¤ËÃÖ¤«¤ì¤ë¥«¥ó¥Þ¤ò˺¤ì¤Æ¤·¤Þ¤¦¤È¤¤¤¦»ö¤Ç¤¢¤ë¡£ ¤½¤ì¤Ï¥¹¥Ú¡¼¥¹¤Ê¤·¤Ë¡¢°ì¤Ä¤Ë¤Þ¤È¤Þ¤Ã¤Æ½ÐÎϤµ¤ì¤ë·ë²Ì¤È¤Ê¤ë¤À¤í¤¦¡£ ¤Ê¤¼¤Ê¤é¡¢Æó¤Ä¤Îʤó¤Àʸ»úÎó¤È¤¤¤¦¤Î¤Ï awk ¤Ç¤ÏÏ¢Àܤò¹Ô¤¦¼°¤ò°ÕÌ£¤¹¤ë¤«¤é¤À¡£¥«¥ó¥Þ¤¬¤Ê¤¤Îã¤È¤·¤Æ

 
$ awk '{ print $1 $2 }' inventory-shipped
-| Jan13
-| Feb15
-| Mar15
…
   

so that the headings are only printed once: ¥Õ¥¡¥¤¥ë`inventory-shipped'¤Ë¤¢¤Þ¤êÆëÀ÷¤ß¤Î¤Ê¤¤¿Í¤ËÂФ·¤Æ¤â ¤ï¤«¤ê¤ä¤¹¤¤½ÐÎϤò¤·¤è¤¦¡£ºÇ½é¤Î¥Ø¥Ã¥À¹Ô¤Ç²¿¤ò½ÐÎϤ·¤Æ¤¤¤ë¤«¤òÌÀ³Î¤Ë¤·¤è¤¦¤È¤·¤Æ¡¢ ·î¤´¤È¤ÎÎÌ($1)¤È¡¢ÎФΥ¯¥ì¡¼¤ÎÀѹþÎÌ($2)¤Î¥Æ¡¼¥Ö¥ë¤Ë¥Ø¥Ã¥À¤òÉÕ¤±²Ã¤¨¤Æ¤¤¤ë¡£ ¤³¤ì¤òBEGIN¥Ñ¥¿¡¼¥ó (see section ÆÃ¼ì¥Ñ¥¿¡¼¥ó BEGIN ¤È END) ¤ò»È¤Ã¤Æ½ÐÎϤκǽé¤Ë°ì²ó¤À¤±½ÐÎϤµ¤»¤Æ¤¤¤ë¡£

 
awk 'BEGIN {  print "Month Crates"
              print "----- ------" }
           {  print $1, $2 }' inventory-shipped
   

¼Â¹Ô¤¹¤ë¤È¤³¤Î¥×¥í¥°¥é¥à¤Î½ÐÎϤϤ³¤¦¤Ê¤ë:

 
Month Crates
----- ------
Jan 13
Feb 15
Mar 15
…
   

¤·¤«¤·ÌäÂ꤬¤¢¤Ã¤Æ¡¢¥Ø¥Ã¥À¤È¥Æ¡¼¥Ö¥ë¥Ç¡¼¥¿¤¬¤­¤Á¤ó¤Èʤó¤Ç¤¤¤Ê¤¤! ¤³¤ì¤Ï´ö¤Ä¤«¤Î¥¹¥Ú¡¼¥¹¤òÆó¤Ä¤Î¥Õ¥£¡¼¥ë¥É¤Î´Ö¤Ë½ÐÎϤ¹¤ë¤³¤È¤Ç ½¤Àµ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë:

 
awk 'BEGIN { print "Month Crates"
             print "----- ------" }
           { print $1, "     ", $2 }' inventory-shipped
   

¤³¤Î¥«¥é¥à¤Î·¤¨Êý¤Ï¿¤¯¤Î¥«¥é¥à¤¬¤¢¤Ã¤¿¾ì¹ç¤Ë·¤¨¤ë¤Î¤¬ ¾¯¡¹ÌÌÅݤˤʤ뤳¤È¤¬ÁÛÁü¤Ç¤­¤ë¤À¤í¤¦¡£ Æó¡¢»°¸Ä¤Î¥«¥é¥à¤Î¤¿¤á¤Ê¤éñ½ã¤Ë¥¹¥Ú¡¼¥¹¤ò¿ô¤¨¤é¤ì¤ë¤À¤í¤¦¤¬¡¢ ¤³¤ì¤¬¤â¤Ã¤È¿¤«¤Ã¤¿¤ê¤¹¤ë¤È¿ô¤¨´Ö°ã¤¨¤ä¤¹¤¯¤Ê¤ë¡£ ¤½¤ì¤¬ printf ʸ¤¬ºî¤é¤ì¤¿Íýͳ¤Ç¤¢¤ë (see section printf¤ò»È¤Ã¤Æ½ÐÎϤòÀ°¤¨¤ë)¡£printfʸ¤Îµ¡Ç½¤Î°ì¤Ä¤Ï ¥Ç¡¼¥¿¤Î¥«¥é¥à¤ò¤½¤í¤¨¤ë¤³¤È¤Ç¤¢¤ë¡£

NOTE: printʸ¤äprintfʸ¤Ç¤Ï¡¢Ç¤°Õ¤Î¥«¥ó¥Þ¤Î¸å¤Ë²þ¹Ô¤òÃÖ¤¯¤À¤±¤Ç ¹Ô¤Î·Ñ³¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë(see section awk Statements Versus Lines)¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.3 ½ÐÎÏ¥»¥Ñ¥ì¡¼¥¿

Àè¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢printʸ¤Ï¥«¥ó¥Þ¤Ç¶èÀÚ¤é¤ì¤¿¥¢¥¤¥Æ¥à¤Î¥ê¥¹¥È¤ò´Þ¤à¡£ ½ÐÎϤǤϡ¢³Æ¥¢¥¤¥Æ¥à¤Ïñ°ì¤Î¥¹¥Ú¡¼¥¹¤Ç¶èÀÚ¤é¤ì¤ë¡£ ¤³¤ì¤Ï¤¿¤À¤Î¥Ç¥Õ¥©¥ë¥È¤Ç¤¢¤ê¡¢¾ï¤Ë¤½¤¦¤Ç¤¢¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£ Áȹþ¤ßÊÑ¿ô¤ÎOFS¤ËǤ°Õ¤Îʸ»úÎó¤ò¥»¥Ã¥È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ ½ÐÎÏ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤ò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ÎÊÑ¿ô¤Î½é´üÃͤÏ" "¡¢¤Ä¤Þ¤êñ°ì¤Î¥¹¥Ú¡¼¥¹¤Ç¤¢¤ë¡£

printʸ¤Ë¤è¤ë½ÐÎÏÁ´ÂΤϽÐÎϥ쥳¡¼¥É¤È¸Æ¤Ð¤ì¤ë¡£ ³Æprint ʸ¤Ï°ì¤Ä¤Î¥ì¥³¡¼¥É¤ò½ÐÎϤ·¡¢ ¤½¤Î¸å¤Ë½ÐÎϥ쥳¡¼¥É¥»¥Ñ¥ì¡¼¥¿(¤â¤·¤¯¤ÏORS)¤È¸Æ¤Ð¤ì¤ëʸ»úÎó¤ò½ÐÎϤ¹¤ë¡£ Áȹþ¤ßÊÑ¿ôORS¤¬¤³¤Îʸ»úÎó¤òÆÃÄꤹ¤ë¡£ ORS ¤Î½é´üÃͤÏ"\n"¤È¤¤¤¦Ê¸»úÎó¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï²þ¹Ô¤Ç¤¢¤ê¡¢¤·¤¿¤¬¤Ã¤Æ¡¢Ä̾ï¤Ï³Æprintʸ¤Ïʬ³ä¤µ¤ì¤¿¹Ô¤òºîÀ®¤¹¤ë¡£

OFS¤äORS¤È¤¤¤Ã¤¿ÊÑ¿ô¤Ë¿·¤·¤¤Ãͤò¥»¥Ã¥È¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ ½ÐÎÏ¥Õ¥£¡¼¥ë¥É¤ä½ÐÎϥ쥳¡¼¥É¤ò¤É¤Î¤è¤¦¤Ëʬ³ä¤¹¤ë¤«¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ Ä̾盧¤ì¤ò¹Ô¤¦¾ì½ê¤Ï¡¢ÆþÎϤ¬¤Þ¤À½èÍý¤µ¤ì¤Ê¤¤BEGIN¥ë¡¼¥ë (see section ÆÃ¼ì¥Ñ¥¿¡¼¥ó BEGIN ¤È END) ¤ÎÃæ¤Ç¤¢¤ë¡£Æ±¤¸¤³¤È¤ò¡¢ ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤ÇÆþÎÏ¥Õ¥¡¥¤¥ë̾¤ÎÁ°¤ËÊÑ¿ô¤Ø¤ÎÂåÆþ¤ò¹Ô¤¦¤³¤È¤Ç¤â¤Ç¤­¤ë¤·¡¢ `-v'¥ª¥×¥·¥ç¥ó¤ò»È¤¦¤³¤È¤Ç¤â¤Ç¤­¤ë (see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¡£ ¼¡¤ÎÎã¤Ç¤Ï¡¢ ³ÆÆþÎϥ쥳¡¼¥ÉÃæ¤Î¥»¥ß¥³¥í¥ó¤Ç¶èÀÚ¤é¤ì¤¿¥Õ¥£¡¼¥ë¥É¤Î°ìÈÖÌÜ¤ÈÆóÈÖÌܤò¡¢ ³Æ¹Ô¤Î¸å¤í¤Ë¶õ¹Ô¤òÄɲ䷤ƽÐÎϤ¹¤ë¡£

 
$ awk 'BEGIN { OFS = ";"; ORS = "\n\n" }
>            { print $1, $2 }' BBS-list
-| aardvark;555-5553
-|
-| alpo-net;555-3412
-|
-| barfly;555-7685
…
   

ORS¤¬²þ¹Ô¤ò´Þ¤ó¤Ç¤¤¤Ê¤±¤ì¤Ð¡¢ ¤¹¤Ù¤Æ¤Î½ÐÎϤÏÍۤ˲þ¹Ô¤ò½ÐÎϤ·¤Ê¤¤¸Â¤ê¤Ï°ì¹Ô¤Ë¤Þ¤È¤Þ¤Ã¤Æ½ÐÎϤµ¤ì¤ë¤³¤È¤Ë¤Ê¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.4 print¤Î¿ôÃͽÐÎϤòÀ©¸æ¤¹¤ë

print ʸ¤ò¿ôÃͤò½ÐÎϤ¹¤ë¤¿¤á¤Ë»È¤Ã¤¿¾ì¹ç¡¢ awk¤ÏÆâÉô¤Ç¿ôÃͤò (¤½¤Î¿ôÃͤòɽ¤¹)ʸ»úÎó¤ËÊÑ´¹¤·¡¢¤½¤Îʸ»úÎó¤ò½ÐÎϤ¹¤ë¡£ awk¤Ï¤³¤ÎÊÑ´¹Æ°ºî¤Î¤¿¤á¤Ësprintf´Ø¿ô¤ò»ÈÍѤ¹¤ë (see section ʸ»úÎóÁàºî´Ø¿ô). ¸½ºß¤Î¤È¤³¤í¡¢sprintf ´Ø¿ô¤¬¿ôÃÍ(¤äʸ»úÎó)¤ò¤É¤Î¤è¤¦¤Ë½ñ¼°²½¤¹¤ë¤«¤ò µ­½Ò¤µ¤ì¤Æ¤¤¤ë ½ñ¼°»ØÄê(format specification)¤ò¼õÂú¤·¡¢ ¿ôÃͤνñ¼°»ØÄê¤Ï°ã¤Ã¤¿ÊýË¡¤¬²¿¼ïÎà¤â¤¢¤ë¤È¤¤¤¦¤³¤È¤À¤±¤Ç½½Ê¬¤Ç¤¢¤ë¡£ ½ñ¼°¤Î°ã¤¤¤Ï½ñ¼°À©¸æÊ¸»ú¤Ç¾Ü¤·¤¯½Ò¤Ù¤é¤ì¤Æ¤¤¤ë¡£

Áȹþ¤ßÊÑ¿ô¤ÎOFMT¤Ï¡¢½ÐÎϤò¤ª¤³¤Ê¤¦¤È¤­¤Ëprint¤¬sprintf ¤ò»È¤Ã¤Æ¿ôÃͤòʸ»úÎó¤ËÊÑ´¹¤¹¤ë¤¿¤á¤Î½ñ¼°¤Î¥Ç¥Õ¥©¥ë¥ÈÀßÄê¤òÊÝ»ý¤·¤Æ¤¤¤ë¡£ OFMT¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÃͤÏ"%.6g"¤Ç¤¢¤ë¡£ OFMT¤ÎÃͤò°ã¤Ã¤¿¤â¤Î¤Ë¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ print¤¬¿ôÃͤò¤É¤Î¤è¤¦¤Ë½ÐÎϤ¹¤ë¤«¤òÊѹ¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ´Êñ¤ÊÎã¤òµó¤²¤è¤¦:

 
$ awk 'BEGIN {
>   OFMT = "%.0f"  # ¿ôÃͤòÀ°¿ô¤È¤·¤Æ½ÐÎÏ (´Ý¤á)
>   print 17.23, 17.54 }'
-| 17 18
   

POSIXɸ½à¤Ë½¾¤¨¤Ð¡¢OFMT¤ËÉâÆ°¾®¿ôÅÀ¤ÎÊÑ´¹»ØÄê¤Ç¤Ï¤Ê¤¤¤Ê¤Ë¤«¤ò¥»¥Ã¥È¤·¤¿¾ì¹ç¤Î awk¤Îưºî¤ÏÄêµÁ¤µ¤ì¤Æ¤Ê¤¤(d.c.)¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5 printf¤ò»È¤Ã¤Æ½ÐÎϤòÀ°¤¨¤ë

print¤Ç½ÐÎϤ¹¤ë¤Ë¤ÏÊ£»¨¤Ê½ñ¼°¤ò»È¤¤¤¿¤¤¤Î¤Ç¤¢¤ì¤Ð¡¢ printf¤ò»È¤¦¤ÈÎɤ¤¡£ printf¤ò»È¤¦¤³¤È¤Ë¤è¤Ã¤Æ¥¢¥¤¥Æ¥à¤´¤È¤Ë¤½¤ÎÉý¤ò»ØÄꤷ¤¿¤ê¡¢ ¿ôÃͤò½ÐÎϤ¹¤ë¤Î¤Ë¤½¤ì¤ò¤É¤Î¤è¤¦¤Ê¥¹¥¿¥¤¥ë¤Ç½ÐÎϤ¹¤ë¤Î¤«¤ò »ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤ë (»ÈÍѤ¹¤ë´ð¿ô¤ä¡¢É乿¤ò½ÐÎϤ¹¤ë¤«¤É¤¦¤«¡¢¾®¿ôÅÀ°Ê²¼²¿·å¤Þ¤Ç½ÐÎϤ¹¤ë¤«)¡£ ¾¤Î°ú¿ô¤ò¤É¤Î¤è¤¦¤Ë¡¢¤É¤³¤Ë½ÐÎϤ¹¤ë¤«¤òÀ©¸æ¤¹¤ë½ñ¼°»ØÄêʸ»úÎó(format string) ¤È¸Æ¤Ð¤ì¤ëʸ»úÎó¤Ë¤è¤Ã¤Æ¡¢¤½¤ì¤ò¹Ô¤Ê¤¦¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.1 Introduction to the printf Statement

printfʸ¤Ï°Ê²¼¤Î¤è¤¦¤Ê·Á¼°¤Ç¤¢¤ë:

 
printf format, item1, item2, …
   

°ú¿ô¥ê¥¹¥ÈÁ´ÂΤò¥«¥Ã¥³¤Ç³ç¤ë¤³¤È¤â¤Ç¤­¤ë¡£ ¤³¤Î¥«¥Ã¥³¤Ï¥ê¥¹¥È¤Î¤¤¤º¤ì¤«¤Î¥¢¥¤¥Æ¥à¤¬´Ø·¸±é»»»Ò`>' ¤ò»È¤Ã¤¿¼°¤Ç¤¢¤ë¤È¤­¤Ë¤ÏɬÍפȤʤ롣¥«¥Ã¥³¤¬¤Ê¤¤¤È¡¢ ¤½¤Îʸ¤Ï¥ê¥À¥¤¥ì¥¯¥È¤Èº®Æ±¤µ¤ì¤ë²ÄǽÀ­¤¬¤¢¤ë (see section print ¤ä printf¤Î½ÐÎϤΥê¥À¥¤¥ì¥¯¥È).

printf¤Èprint¤Î°ã¤¤¤Ï°ú¿ôformat¤Ë¤¢¤ë¡£ ¤³¤ì¤Ïʸ»úÎó¤È¤·¤Æ°·¤ï¤ì¤ë¼°¤Ç¡¢ ¾¤Î°ú¿ô¤ò¤½¤ì¤¾¤ì¤É¤Î¤è¤¦¤Ë½ÐÎϤ¹¤ë¤«¤ò»ØÄꤹ¤ë¡£ ¤³¤ì¤Ï½ñ¼°»ØÄêʸ»úÎó(format string)¤È¸Æ¤Ð¤ì¤ë¡£

¤³¤Î½ñ¼°»ØÄêʸ»úÎó¤Ï ISO C¥é¥¤¥Ö¥é¥ê¤Îprintf´Ø¿ô¤Î¤â¤Î¤ÈƱ¤¸¤Ç¤¢¤ë¡£ ÂçÉôʬ¤Î½ñ¼°¤Ï(½ñ¼°»ØÄêʸ»úÎó¤Î)ʸ»úÄ̤ê¤Ë½ÐÎϤµ¤ì¤ë¥Æ¥­¥¹¥È¤Ç¤¢¤ë¡£ ½ñ¼°»ØÄê»Ò(format specifiers) ¤Ï¥¢¥¤¥Æ¥à°ì¤ÄËè¤Ë°ì¤Ä¤Î³ä¤ê¤¢¤¤¤Ç¡¢¤³¤Î¥Æ¥­¥¹¥ÈÃæ¤ËÃÖ¤«¤ì¤Æ¤¤¤ë¡£ ¸Ä¡¹¤Î½ñ¼°»ØÄê»Ò¤Ï¡¢¼¡¤Î¥¢¥¤¥Æ¥à¤ò¤É¤Î¤è¤¦¤Ê½ñ¼°¤Ç½ÐÎϤ¹¤ë¤«¤ò»ØÄꤷ¤Æ¤¤¤ë¡£

printfʸ¤Ï²þ¹Ô¤ò¼«Æ°Åª¤ËÉղ乤뤳¤È¤Ï¤»¤º¡¢ ½ñ¼°Ê¸»úÎó¤Ç»ØÄꤵ¤ì¤¿¤â¤Î¤À¤±¤ò½ÐÎϤ¹¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ²þ¹Ô¤¬É¬Íפʤé¤Ð¡¢½ñ¼°»ØÄêʸ»úÎó¤Ë¤½¤ì¤ò´Þ¤á¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ OFS¤äORS¤È¤¤¤Ã¤¿ÊÑ¿ô¤Ë³ÊǼ¤µ¤ì¤Æ¤¤¤ë½ÐÎÏ¥»¥Ñ¥ì¡¼¥¿¤Ï printf¤ËÂФ·¤Æ²¿¤Î±Æ¶Á¤âÍ¿¤¨¤Ê¤¤¡£Î㤨¤Ð:

 
$ awk 'BEGIN {
>    ORS = "\nOUCH!\n"; OFS = "+"
>    msg = "Dont Panic!"
>    printf "%s\n", msg
> }'
-| Dont Panic!
   

¤³¤³¤Ç¤Ï¡¢`+'¤ä`OUCH'¤Ï¥á¥Ã¥»¡¼¥¸¤ÎÃæ¤Ë¸½¤ì¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.2 ½ñ¼°À©¸æÊ¸»ú

½ñ¼°»ØÄê»Ò¤Ï`%' ¤Ç»Ï¤Þ¤ê¡¢(printfʸ¤Ç¤É¤Î¤è¤¦¤Ë½ÐÎϤ¹¤ë¤«¤ò»ØÄꤹ¤ë) ½ñ¼°»ØÄêʸ»ú(format-control letter)¤Ç½ª¤ï¤ë¡£ ½ñ¼°»ØÄêʸ»ú¤Ï½ÐÎϤ¹¤ëÃͤ¬¤É¤ó¤Ê¼ïÎà¤Ç¤¢¤ë¤«¤ò»ØÄꤹ¤ë¡£ ½ñ¼°»ØÄê»Ò¤Î»Ä¤ê¤Ï¡¢¤É¤Î°Ì¤Î¥Õ¥£¡¼¥ë¥ÉÉý¤Ç½ÐÎϤ¹¤ë¤«¤È¤¤¤¦¤è¤¦¤Ê»ö¤ò»ØÄꤹ¤ë (¾Êά²Äǽ¤Ê)½¤¾þ»Ò¤Ç¤¢¤ë¡£ °Ê²¼¤Ï½ñ¼°»ØÄêʸ»ú¤Î¥ê¥¹¥È¤Ç¤¢¤ë:

%c

¿ôÃͤòASCII¥­¥ã¥é¥¯¥¿¤È¤ß¤Ê¤·¤Æ½ÐÎϤ¹¤ë¡£ `printf "%c",65'¤Ï `A'¤ò½ÐÎϤ¹¤ë¡£ ʸ»úÎó¤òÍ¿¤¨¤¿¾ì¹ç¤Ïʸ»úÎó¤ÎÀèÆ¬¤Ë¤¢¤ë¥­¥ã¥é¥¯¥¿¤ò½ÐÎϤ¹¤ë¡£

%d, %i

¤É¤Á¤é¤âƱ¤¸¤Ç½½¿ÊÀ°¿ô¤ò½ÐÎϤ¹¤ë (`%i'¤ÏISO C¤È¤Î¸ß´¹À­¤Î¤¿¤á¤Î»ÅÍͤǤ¢¤ë)¡£

%e, %E

¤³¤ì¤Ï¿ôÃͤò²Ê³Ø(¤Þ¤¿¤Ï»Ø¿ô)·Á¼°¤Ç½ÐÎϤ¹¤ë¡£Î㤨¤Ð

 
printf "%4.3e\n", 1950
   

¤³¤ì¤Ï¾®¿ôÅÀ°Ê²¼¤ò´Þ¤á¤ÆÁ´Éô¤Ç»Í¤Ä¤Î¿ô»ú¤«¤é¤Ê¤ë `1.950e+03'¤ò½ÐÎϤ¹¤ë (`4.3'¤Ï Æó¤Ä¤Î½¤¾þ»Ò(modifiers)¤Ç¤¢¤ê¡¢¾Ü¤·¤¯¤Ï¸å½Ò¤¹¤ë)¡£ `%E'¤Ï`e'¤ÎÂå¤ï¤ê¤Ë`E'¤ò½ÐÎϤ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£

%f

ÉâÆ°¾®¿ôÅÀ·Á¼°¤Ç¿ôÃͤò½ÐÎϤ¹¤ë¡£Î㤨¤Ð¡¢

 
printf "%4.3f", 1950
   

¤³¤ì¤Ï¾®¿ôÅÀ°Ê²¼»°·å¤òȼ¤Ã¤¿»Í·å¤Îsignificant figures¤Ç¤¢¤ë `1950.000'¤ò½ÐÎϤ¹¤ë(`4.3' ¤Ï Æó¤Ä½¤¾þ»Ò(modifiers)¤Ç¤¢¤ê¡¢ ¾Ü¤·¤¯¤Ï¸å½Ò¤¹¤ë)¡£

IEEE 754ÉâÆ°¾®¿ôÅÀ¥Õ¥©¡¼¥Þ¥Ã¥È¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥·¥¹¥Æ¥à¤Ç¤Ï¡¢ Éé¤Î̵¸ÂÂç¤òɽ¤¹¥Õ¥©¡¼¥Þ¥Ã¥È¤Ï`-inf'¤â¤·¤¯¤Ï`-infinity'¤Ç ¤¢¤ê¡¢Àµ¤Î̵¸ÂÂç¤Ï`inf'¤È`infinity'¤Ç¤¢¤ë¡£ ÆÃÊ̤ʡȿôÃͤǤʤ¤¡É(not a number)ÃͤÏ`-nan'¤Þ¤¿¤Ï`nan'¤Ç¤¢¤ë¡£

%F

%f¤Ë»÷¤Æ¤¤¤ë¤±¤ì¤É¤â¡¢¡È¿ôÃͤǤʤ¤¡ÉÃÍ¤Ï Âçʸ»ú¤Çɽ¤µ¤ì¤ë¡£

%F½ñ¼°¤ÏISO C¤ËÂФ¹¤ëPOSIX¤Î³ÈÄ¥¤Ç¤¢¤ë¡£ Á´¤Æ¤Î¥·¥¹¥Æ¥à¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤¡£ ¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥·¥¹¥Æ¥à¤Ç¤Ïgawk¤Ï%f¤òÂå¤ï¤ê¤Ë»È¤¦¡£

%g, %G

²Ê³ØÉ½µ­¤«ÉâÆ°¾®¿ôÅÀɽµ­¤Î¡¢¤¤¤º¤ì¤«½ÐÎϤ¹¤ë¥­¥ã¥é¥¯¥¿¿ô¤¬¾¯¤Ê¤¯¤Ê¤ëÊý¤Ç½ÐÎϤ¹¤ë¡£ ·ë²Ì¤¬²Ê³ØÉ½µ­¤Ç¤¢¤Ã¤¿¤È¤­¡¢ `%G' ¤Ï `E' ¤ò `e'¤ÎÂå¤ï¤ê¤Ë»ÈÍѤ¹¤ë¡£

%o

This prints an unsigned octal integer. ̵É乿¤ÎȬ¿ÊÀ°¿ô¤ò½ÐÎϤ¹¤ë¡£

%s

ʸ»úÎó¤ò½ÐÎϤ¹¤ë¡£

%u

̵É乿¤Î½½¿ÊÀ°¿ô¤ò½ÐÎϤ¹¤ë (¤³¤Î½ñ¼°¤Ï marginal ¤Ê¤â¤Î¤Ç¤¢¤ë¡£¤Ê¤¼¤Ê¤éawk¤Ë¤ª¤±¤ë¿ôÃÍ¤Ï Á´¤ÆÉâÆ°¾®¿ôÅÀ¿ô¤Ç¤¢¤Ã¤Æ¡¢¤³¤Î½ñ¼°¤ÏC¤È¤Î¸í¥«¥ó¤Î¤¿¤á¤ËÄ󶡤µ¤ì¤Æ¤¤¤ë)¡£

%x, %X

½½Ï»¿Ê¤ÎÉ乿¤Ê¤·À°¿ô¤ò½ÐÎϤ¹¤ë¡£ `%X'¤Ï`a'¤«¤é`f'¤Þ¤Ç¤ÎÂå¤ï¤ê¤Ë `A'¤«¤é`F'¤Þ¤Ç¤ò»ÈÍѤ¹¤ë¡£

%%

¤³¤ì¤ÏËÜÅö¤Ï½ñ¼°À©¸æÊ¸»ú¤Ç¤Ï¤Ê¤¤¡¢¤·¤«¤·`%'¤Î¸å¤Ë³¤±¤Æ½ñ¤«¤ì¤¿¾ì¹ç¤Ë¤Ï°ÕÌ£¤¬¤¢¤ë¡£ `%%'¤Èʤ٤ƽñ¤¤¤¿¤È¤­¤Ë¤Ï°ìʸ»ú¤Î`%'¤ò½ÐÎϤ·¡¢°ú¿ô¤ò¼è¤é¤Ê¤¤¡£ ¤Þ¤¿¡¢¤¹¤Ù¤Æ¤Î½¤¾þ»Ò¤ò̵»ë¤¹¤ë¡£

Ãí°Õ: C¤Ç¤ÎºÇ¤â¹­¤¤À°¿ô·¿¤ÎÈϰϤò±Û¤¨¤¿ÃͤËÂФ¹¤ëÀ°¿ô½ñ¼°»ØÄê¤ò»È¤Ã¤¿¤È¤­¡¢ gawk¤Ï½ñ¼°»ØÄê¤ò`%g'¤ËÀÚ¤êÂØ¤¨¤ë¡£ ¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç`--lint'¤ò»ØÄꤷ¤¿¤È¤­(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó) gawk¤Ï¤³¤ì¤ò·Ù¹ð¤¹¤ë¡£ ¾¤Î¥Ð¡¼¥¸¥ç¥ó¤Îawk¤Ï´Ö°ã¤Ã¤¿Ãͤò½ÐÎϤ·¤¿¤ê²¿¤«¤Ø¤ó¤Êưºî¤ò ¤·¤¿¤ê¤¹¤ë¤«¤â¤·¤ì¤Ê¤¤¡£(d.c.)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.3 printf ¤Î½ñ¼°¤Î½¤¾þ»Ò

½ñ¼°»ØÄê¤Ë¤Ï½ÐÎϤµ¤ì¤ë¥¢¥¤¥Æ¥à¤ÎÃͤȡ¢½ÐÎϤ¹¤ëÂ礭¤µ¤òÀ©¸æ¤¹¤ë¤¿¤á¤Ë ½¤¾þ»Ò(modifiers)¤ò´Þ¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ½¤¾þ»Ò¤Ï`%'¤È½ñ¼°»ØÄêʸ»ú¤Î´Ö¤ËÃÖ¤«¤ì¤ë¡£ ¸å¤Çµó¤²¤ëÎã¤Ç¤Ï¡¢½ÐÎÏÃæ¤Î¶õÇò¤ò``'•' ¤È¤¤¤¦¥·¥ó¥Ü¥ë¤Çɽ¤ï¤·¤Æ¤¤¤ë¡£ °Ê²¼¤Ï»ÈÍѤ¹¤ë¤³¤È¤Î¤Ç¤­¤ë½¤¾þ»Ò¤Ç¤¢¤ë(½Ð¸½¤¹¤ë¤³¤È¤Î¤Ç¤­¤ë½ç¤Ç):

N$

`$'¤Ë³¤¯À°¿ôÃͤϰÌÃÖ»ØÄê»Ò(positional specifier)¤Ç¤¢¤ë¡£ Ä̾ï¤Ï¡¢½ñ¼°»ØÄê»Ò¤Ï½ñ¼°»ØÄêʸ»úÎóÃæ¤Ë¸½¤ì¤¿½ç¤Ë°ú¿ô¤ËÂФ·¤Æ ŬÍѤ¬¹Ô¤ï¤ì¤ë¡£°ÌÃÖ»ØÄê»Ò¤òȼ¤Ã¤¿¾ì¹ç¡¢½ñ¼°»ØÄê»Ò¤Ï°ú¿ô¥ê¥¹¥ÈÃæ¤Î ¼¡¤Î°ú¿ô¤Ç¤Ï¤Ê¤¯ÆÃÄê¤Î°ú¿ô¤ËÂФ·¤ÆÅ¬ÍѤµ¤ì¤ë¡£ °ÌÃÖ»ØÄê»Ò¤Ï1¤«¤é»Ï¤Þ¤ë¡£¤·¤¿¤¬¤Ã¤Æ:

 
printf "%s %s\n", "don't", "panic"
printf "%2$s %1$s\n", "panic", "don't"
   

¤³¤ì¤Ïͭ̾¤Êͧ¹¥Åª¥á¥Ã¥»¡¼¥¸¤òÆóÅÙ½ÐÎϤ¹¤ë¡£

°ì¸«¤·¤¿¤È¤³¤í¤Ç¤Ï¡¢¤³¤Îµ¡Ç½¤Ï¤½¤ì¤Û¤É»È¤ï¤ì¤Æ¤¤¤Ê¤¤¤è¤¦¤À¡£ »ö¼Â¤³¤ì¤Ïgawk¤Î³ÈÄ¥¤Ç¤¢¤ê¡¢¼Â¹Ô»þ¤ËËÝÌõ¥á¥Ã¥»¡¼¥¸¤ò»È¤¦¤¿¤á¤Ë ÍѤ¤¤é¤ì¤ë¡£ See section Rearranging printf Arguments¤Ë¤É¤Î¤è¤¦¤Ë¡¢¤Ê¤¼°ÌÃÖ»ØÄê»Ò¤ò»È¤¦¤Î¤«¤¬ ÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¡£¸½ºß¤Î¤È¤³¤í¡¢²æ¡¹¤Ï¤³¤ì¤ò»È¤ï¤Ê¤¤¡£

-

¥Þ¥¤¥Ê¥¹µ­¹æ¤Ï½ÐÎÏÉý¤Î½¤¾þ¤Ë»È¤¤¡¢Í¿¤¨¤é¤ì¤¿½ÐÎÏÉý¤ÎÃæ¤Çº¸µÍ¤á¤ò¹Ô¤¦¤³¤È¤ò»Ø¼¨¤¹¤ë¡£ Ä̾ï¤ÏÍ¿¤¨¤é¤ì¤¿½ÐÎÏÉý¤ÎÃæ¤Ç±¦µÍ¤á¤Çɽ¼¨¤¬¤Ê¤µ¤ì¤ë¡£½¾¤Ã¤Æ¡¢

 
printf "%-4s", "foo"
   

¤³¤ì¤Ï`foo•'¤ò½ÐÎϤ¹¤ë¡£

¶õÇò

¿ôÃͤÎÊÑ´¹¤ÎºÝ¤Ë¡¢¤½¤ÎÃͤ¬Àµ¤Ç¤¢¤ì¤Ð¥¹¥Ú¡¼¥¹¤ò¡¢ Éé¤Ç¤¢¤ì¤Ð¥Þ¥¤¥Ê¥¹µ­¹æ¤ò¿ôÃͤÎÁ°¤ËÃÖ¤¯¡£

+

¥×¥é¥¹µ­¹æ¤ÏÉý»ØÄê¤Î½¤¾þ»Ò(¸å½Ò¤¹¤ë)¤ÎÁ°¤Ç»ÈÍѤ·¡¢ ÊÑ´¹¤µ¤ì¤¿¿ôÃͤ¬Àµ¤Î¿ôÃͤǤ¢¤Ã¤Æ¤â¡¢¤½¤ÎÁ°¤Ëɬ¤ºÉ乿¤ò¤Ä¤±¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¡£ `+'¤Ï¥¹¥Ú¡¼¥¹½¤¾þ»Ò¤ò¥ª¡¼¥Ð¡¼¥é¥¤¥É¤¹¤ë¡£

#

ÆÃÄê¤ÎÀ©¸æÊ¸»ú¤ËÂФ·¤Æ``ÊÌ·Á¼°''(alternate form)¤ò»ÈÍѤ¹¤ë¡£ `%o'¤ÎÁ°¤ËÃÖ¤¤¤¿¾ì¹ç¿ôÃͤÎÁ°¤Ë¥¼¥í¤òÃÖ¤¯¡£ `%x'¤ä`%X'¤ÎÁ°¤ËÃÖ¤¤¤¿¾ì¹ç¡¢ ½ÐÎϤ¹¤ë¿ôÃͤ¬0¤Ç¤Ê¤«¤Ã¤¿¤È¤­¤Ë¤½¤ì¤ËÀè¹Ô¤·¤Æ`0x' ¤ä `0'¤òÃÖ¤¯¡£ `%e', `%E', `%f' ¤Î¾ì¹ç¡¢¾ï¤Ë¾®¿ôÅÀ¤ò¤Ä¤±¤ë¤è¤¦¤Ë¤¹¤ë¡£ `%g', `%G'¤Î¾ì¹ç¡¢¾®¿ôÅÀ°Ê²¼¤Î0¤â¾Êά¤µ¤ì¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¡£

0

%¤Ë³¤¤¤¿`0'¤Ï¥Õ¥é¥°¤È¤·¤ÆÆ°ºî¤·¡¢½ÐÎϤΥѥǥ£¥ó¥°¤ò¥¹¥Ú¡¼¥¹¤Ç¤Ï¤Ê¤¯ 0¤Ç¹Ô¤¦¤è¤¦¤Ë¤¹¤ë¡£ ¤³¤ì¤Ï¿ôÃͤǤϤʤ¤½ÐÎϽñ¼°¤Î¤È¤­¤âŬÍѤµ¤ì¤ë(d.c.)¡£ ¤³¤Î¥Õ¥é¥°¤Ï¥Õ¥£¡¼¥ë¥ÉÉý¤¬¼ÂºÝ¤Ë½ÐÎϤµ¤ì¤ëÃͤÎÉý¤è¤ê¤âÂ礭¤¤¾ì¹ç¤Ë¤Î¤ß¸ú²Ì¤ò»ý¤Ä¡£

'

¥·¥ó¥°¥ë¥¯¥©¡¼¥È(¤Þ¤¿¤Ï¥¢¥Ý¥¹¥È¥í¥Õ¥£)¤ÏISO C¤ËÂФ¹¤ëPOSIX¤Î³ÈÄ¥¤Ç¤¢¤ë¡£ ÉâÆ°¾®¿ôÅÀ¿ôÃͤÎÀ°¿ôÉô¤â¤·¤¯¤Ï½½¿ÊÀ°¿ôÃÍÁ´ÂΤËÂФ·¤Æ 1000¤´¤È¤Î¶èÀÚ¤êʸ»ú¤òÆþ¤ì¤ë¤³¤È¤ò»Ø¼¨¤¹¤ë¡£ ¤³¤ì¤Ï¤½¤ì¤ò¥µ¥Ý¡¼¥È¤·¤Æ¤¤¤ë¥í¥«¡¼¥ë¤Ë¤ª¤¤¤Æ¤Î¤ßưºî¤¹¤ë¡£ ¤¿¤È¤¨¤Ð:

 
$ cat thousands.awk                                     Show source program
-| BEGIN { printf "%'d\n", 1234567 }
$ LC_ALL=C gawk -f thousands.awk                        "C"¥í¥«¡¼¥ë¤Ç¼Â¹Ô
-| 1234567
$ LC_ALL=en_US.UTF-8 gawk -f thousands.awk              US English UTF ¥í¥«¡¼¥ë¤Ç¼Â¹Ô
-| 1,234,567
   

¥í¥«¡¼¥ë¤È¹ñºÝ²½¤Ë´Ø¤¹¤ë»öÊÁ¤Ë¤Ä¤¤¤Æ¤ÏWhere You Are Makes A Difference¤ò»²¾È¡£

Ãí°Õ: `''¤Ï¤¹¤Ð¤é¤·¤¤µ¡Ç½¤Ç¤¢¤ë¤±¤ì¤É¤â¡¢»È¤¦¤Î¤¬Ê£»¨¤Ç¤¢¤ë: ¥³¥Þ¥ó¥É¥é¥¤¥ó¥×¥í¥°¥é¥à¤Ë¤ª¤¤¤Æ»È¤¦¤³¤È¤¬Æñ¤·¤¤¡£ ¥¯¥©¡¼¥Æ¥£¥ó¥°¥È¥ê¥Ã¥¯¤Ë´Ø¤¹¤ë¤³¤È¤Ï¥·¥§¥ë¤Î¥¯¥©¡¼¥Æ¥£¥ó¥°¤Ë¤Ä¤¤¤Æ¤ò»²¾È¡£

width

¤³¤ì¤Ï¥Õ¥£¡¼¥ë¥É¤ÎÉý¤ò»ØÄꤹ¤ë¿ô»ú¤Ç¤¢¤ë¡£ `%' ¤È½ñ¼°»ØÄêʸ»ú¤Î´Ö¤ËÃÖ¤«¤ì¡¢ ¤³¤ÎÉý¤Ë¥Õ¥£¡¼¥ë¥É¤ò¹­¤²¤Æ½ÐÎϤò¹Ô¤¦¤³¤È¤ò»ØÄꤹ¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ï¥Õ¥£¡¼¥ë¥É¤òËä¤á¤ë¤¿¤á¤Î¥¹¥Ú¡¼¥¹¤Ï¥Õ¥£¡¼¥ë¥É¤Îº¸¤«¤éÃÖ¤«¤ì¤ë¡£ ¼¡¤Î¤è¤¦¤Ë»ØÄꤷ¤¿¾ì¹ç¡¢

 
printf "%4s", "foo"
   

prints `•foo'. `•foo'¤ò½ÐÎϤ¹¤ë¡£

width ¤Ï(½ÐÎϤÎ)ºÇ¾®Éý¤Ç¤¢¤Ã¤Æ¡¢ºÇÂçÉý¤Ç¤Ï¤Ê¤¤¡£ ¥¢¥¤¥Æ¥à¤ÎÃͤ¬ width ¤è¤ê¤â¿¤¯¤Î¥­¥ã¥é¥¯¥¿¤òɬÍפȤ·¤¿¤Ê¤é¤Ð¡¢ ½ÐÎϤϤ½¤ÎÉý¤È¤Ê¤ë¡£¤·¤¿¤¬¤Ã¤Æ¡¢

 
printf "%4s", "foobar"
   

¤³¤ì¤Ï`foobar'¤ò½ÐÎϤ¹¤ë¡£

¥Þ¥¤¥Ê¥¹µ­¹æ¤òȼ¤Ã¤¿¥Õ¥£¡¼¥ë¥ÉÉý»ØÄê¤Ï¡¢ Éý¤¢¤ï¤»¤Î¤¿¤á¤Î¥¹¥Ú¡¼¥¹¤ò¥Õ¥£¡¼¥ë¥É¤Îº¸¤Ç¤Ï¤Ê¤¯±¦¤ËÃÖ¤¯¡£

.prec

¥«¥ó¥Þ¤Ë³¤¯À°¿ôÃͤϽÐÎϤΤȤ­¤òÀºÅÙ¤ò»ØÄꤹ¤ë¤Î¤Ë»ÈÍѤ¹¤ë¿ô»ú¤Ç¤¢¤ë¡£ À©¸æÊ¸»ú¤Ç»ÈÍѤ¹¤ëÀºÅÙ¤ò»ØÄꤹ¤ë:

%e, %E, %f

¾®¿ôÅÀ¤Î±¦Â¦¤Ë¸½¤ì¤ë·å¿ô¡£

%g, %G

¿ô¤ÎºÇÂç·å¡£

%d, %i, %o, %u, %x, %X

½ÐÎϤ¹¤Ù¤­¿ô»ú¤ÎºÇ¾®·å¿ô¡£

%s

½ÐÎϤ¹¤Ù¤­Ê¸»úÎó¤ÎºÇÂç·å¿ô¡£

¤·¤¿¤¬¤Ã¤Æ¡¢

 
printf "%.4s", "foobar"
   

¤³¤ì¤Ï`foob'¤ò½ÐÎϤ¹¤ë¡£

C¥é¥¤¥Ö¥é¥ê¤Îprintf¤Ï¼Â¹Ô»þ¤Ëwidth¤Èprec¤ò»ØÄꤹ¤ë¤³¤È (Î㤨¤Ð"%*.*s"¤Î¤è¤¦¤Ë)¤¬¤Ç¤­¤ë¡£ ½ñ¼°Ê¸»úÎóÃæ¤ÇÉý¤äÀºÅÙ¤òµ­½Ò¤¹¤ëÂå¤ï¤ê¤Ë¡¢ °ú¿ô¥ê¥¹¥È¤Ç¤½¤ì¤òÅϤ¹»ö¤¬¤Ç¤­¤ë¡£Î㤨¤Ð

 
w = 5
p = 3
s = "abcdefg"
printf "%*.*s\n", w, p, s
   

¤³¤ì¤Ï°Ê²¼¤Î¤â¤Î¤ËÅù¤·¤¤:

 
s = "abcdefg"
printf "%5.3s\n", s
   

¾å¤Î¥×¥í¥°¥é¥à¤ÏξÊý¤È¤â`••abc'¤ò½ÐÎϤ¹¤ë¡£ awk ¤Î½é´ü¤Î¥Ð¡¼¥¸¥ç¥ó¤Ç¤Ï¤³¤Îµ¡Ç½¤¬¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤«¤Ã¤¿¡£ ¼¡¤ÎÍͤ˽ñ¼°Ê¸»úÎó¤òÁȤßΩ¤Æ¤ë¤Î¤Ëʸ»úÎóÏ¢Àܤò»È¤¦»ö¤Ç¡¢ ¤³¤Îµ¡Ç½¤ò¥·¥ß¥å¥ì¡¼¥È¤¹¤ë»ö¤¬²Äǽ¤Ç¤¢¤ë¡£

 
w = 5
p = 3
s = "abcdefg"
printf "%" w "." p "s\n", s
   

¤³¤ì¤ÏÆÉ¤ß°×¤¤¤È¤Ï±¾¤¨¤Ê¤¤¤¬¡¢¤­¤Á¤ó¤ÈƯ¤¯¡£

C¥×¥í¥°¥é¥Þ¤Ïprintf¤Î½ñ¼°»ØÄêʸ»úÎóÃæ¤Ç `l'¡¢`L'¡¢`h'¤È¤¤¤¦¥Õ¥é¥°¤ò»È¤Ã¤Æ¤¤¤ë¤«¤â¤·¤ì¤Ê¤¤¡£ ¤³¤ì¤é¤Ïawk¤Ç¤ÏÉÔÀµ¤Ê¥Õ¥é¥°¤Ç¤¢¤ë¡£ ÂçÉôʬ¤Îawk½èÍý·Ï¤Ç¤Ï¤³¤ì¤é¤ò²¿¤Î·Ù¹ð¤â¤Ê¤·¤Ë̵»ë¤¹¤ë¡£ `--lint'¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç (see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¡¢ gawk¤Ï¤³¤ì¤é¤Î¥Õ¥é¥°¤ò»ÈÍѤ·¤¿¤È¤­¤Ë·Ù¹ð¤òȯ¤¹¤ë¡£ ƱÍͤË`--posix'¤¬»ØÄꤵ¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤ÏÃ×̿Ū¥¨¥é¡¼¤È¤Ê¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.5.4 printf ¤ò»È¤Ã¤¿Îã

¼¡¤ÎÎã¤Ï¡¢printf¤òÀ°Îó¤·¤¿¥Æ¡¼¥Ö¥ë¤Î½ÐÎϤˤɤΤ褦¤Ë »ÈÍѤ¹¤ë¤«¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£

 
awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list
   

¤³¤Î¥×¥í¥°¥é¥à¤Ï `BBS-list'¤È¤¤¤¦¥Õ¥¡¥¤¥ëÃæ¤ÎBBS¤Î̾Á°($1) ¤ò10ʸ»ú¤Îʸ»úÎó¤È¤·¤Æ¡¢º¸´ó¤»¤Ç½ÐÎϤ¹¤ë¡£ ƱÍͤËÅÅÏÃÈÖ¹æ($2)¤ò¤½¤ì¤Ë³¤¤¤Æ½ÐÎϤ¹¤ë¡£ ·ë²Ì¤È¤·¤Æ¡¢Æó¤Ä¤Î¥«¥é¥à¤«¤é¤Ê¤ë¡¢Ì¾Á°¤ÈÅÅÏÃÈÖ¹æ¤Î¤­¤Á¤ó¤Èʤó¤À¥Æ¡¼¥Ö¥ë¤¬ºîÀ®¤µ¤ì¤ë¡£

 
$ awk '{ printf "%-10s %s\n", $1, $2 }' BBS-list
-| aardvark   555-5553
-| alpo-net   555-3412
-| barfly     555-7685
-| bites      555-1675
-| camelot    555-0542
-| core       555-2912
-| fooey      555-1234
-| foot       555-6699
-| macfoo     555-6480
-| sdace      555-3430
-| sabafoo    555-2127
   

¤Ê¤¼ÅÅÏÃÈÖ¹æ¤ò¿ôÃͤȤ·¤Æ½ÐÎϤ¹¤ë¤è¤¦¤Ë»ØÄꤷ¤Æ¤¤¤Ê¤¤¤Î¤«¤ï¤«¤ë¤À¤í¤¦¤«? ¤³¤³¤Ç¤Ï¿ô»ú¤¬¥À¥Ã¥·¥å¤Ç¶èÀÚ¤é¤ì¤Æ¤¤¤ë¤Î¤Çʸ»úÎó¤È¤·¤Æ½ÐÎϤ·¤Æ¤¤¤ë¡£ ¤â¤·¡¢¤³¤ì¤ò¿ôÃͤȤ·¤Æ½ÐÎϤ·¤è¤¦¤È¤·¤¿¤Ê¤é¤Ð¡¢ ¤½¤³¤ÇÆÀ¤é¤ì¤ë¤â¤Î¤ÏºÇ½é¤Î»°¤Ä¤Î¿ô»ú `555'¤Ç¤¢¤ë¡£ ¤³¤ì¤Ïº®Íð¤ò¾·¤¯¤À¤í¤¦¡£

¤³¤³¤Ç¤ÏÅÅÏÃÈÖ¹æ¤Î½ÐÎÏ»þ¤ÎÉý¤ò»ØÄꤷ¤Æ¤¤¤Ê¤¤¡£ ¤½¤ì¤Ï½ÐÎϹԤκǸå¤Ë¤¢¤ë¤â¤Î¤Ç¤¢¤ê¡¢¤½¤Î¸å¤í¤Ë¥¹¥Ú¡¼¥¹¤òÃÖ¤¯É¬Íפ¬¤Ê¤¤¤«¤é¤À¡£

ÀèÆ¬¤Î¥«¥é¥à¤Ë¥Ø¥Ã¥À¤òÉÕ¤±²Ã¤¨¤ë¤³¤È¤Ë¤è¤Ã¤Æ¥Æ¡¼¥Ö¥ë¤ò¤è¤ê¸«¤ä¤¹¤¤¤â¤Î¤Ë¤·¤Æ¤¤¤ë¡£ ¤³¤ì¤ò¹Ô¤¦°Ù¤Ë¡¢BEGIN¥Ñ¥¿¡¼¥ó(see section ÆÃ¼ì¥Ñ¥¿¡¼¥ó BEGIN ¤È END) ¤ò»È¤Ã¤Æ¥Ø¥Ã¥À¤òawk¥×¥í¥°¥é¥à¤Î»Ï¤á¤Ç°ìÅÙ¤À¤±½ÐÎϤ·¤Æ¤¤¤ë¡£

 
awk 'BEGIN { print "Name      Number"
             print "----      ------" }
     { printf "%-10s %s\n", $1, $2 }' BBS-list
   

¤³¤ÎÎã¤Ç¤Ïprintʸ¤È printfʸ¤òº®¤¼¤Æ»È¤Ã¤Æ¤¤¤ë¤Î¤Ëµ¤¤¬¤Ä¤¤¤¿¤À¤í¤¦¤«?¡¢ Ʊ¤¸·ë²Ì¤òprintfʸ¤À¤±¤ò»È¤Ã¤ÆÆÀ¤ë»ö¤¬¤Ç¤­¤ë¡£

 
awk 'BEGIN { printf "%-10s %s\n", "Name", "Number"
             printf "%-10s %s\n", "----", "------" }
     { printf "%-10s %s\n", $1, $2 }' BBS-list
   

¥Ø¥Ã¥À¤ÈƱ¤¸½ñ¼°»ØÄê¤ò»È¤Ã¤Æ³Æ¥«¥é¥à¤ò½ÐÎϤ·¤Æ¤¤¤ë¤Î¤Ç¡¢ ¥Ø¥Ã¥À¤ÈƱ¤¸¤è¤¦¤Ë·å·¤¨¤µ¤ì¤ë¡£

»°²óƱ¤¸½ñ¼°¤ò»ØÄꤹ¤ë¤Î¤Ë¡¢ÊÑ¿ô¤Ë½ñ¼°¤òÂåÆþ¤·¤Æ¤½¤ÎÊÑ¿ô¤Ç»ØÄꤹ¤ëÊýË¡¤¬¤¢¤ë¡£ ¼ÂÎã¤òµó¤²¤è¤¦¡£

 
awk 'BEGIN { format = "%-10s %s\n"
             printf format, "Name", "Number"
             printf format, "----", "------" }
     { printf format, $1, $2 }' BBS-list
   

»î¤·¤Ë°ÊÁ°¤ËÀâÌÀ¤·¤¿ (see section print ʸ). `inventory-shipped'¤ÎÎã¤Î¡¢É½Âê¤Èɽ¤Î¥Ç¡¼¥¿¤ò printfʸ¤Ç¤½¤í¤¨¤Æ¤ß¤Æ¤Û¤·¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.6 print ¤ä printf¤Î½ÐÎϤΥê¥À¥¤¥ì¥¯¥È

¤³¤ì¤Þ¤Ç¤Ïprint¤äprintf¤«¤é¤Î½ÐÎϤÏɸ½à½ÐÎÏ¡£ Ä̾ï¤ÏüËö¤ËÂФ·¤Æ¤Î¤ß¹Ô¤ï¤ì¤Æ¤¤¤¿¡£ print ¤È printf¤ÎξÊý¤È¤âÊ̤ξì½ê¤Ë½ÐÎϤòÁ÷¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤ì¤Ï¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó (redirection)¤È¸Æ¤Ð¤ì¤ë¡£

¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ïprint ʸ¤« printfʸ¤Î¸å¤Ë½ñ¤¯¤³¤È¤¬¤Ç¤­¤ë¡£ awk¤Ë¤ª¤±¤ë¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ï ¥·¥§¥ë¥³¥Þ¥ó¥É¤Î¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤È¤è¤¯»÷¤Æ¤¤¤ë¤¬¡¢ awk¤Ç¤Ï¥×¥í¥°¥é¥à¤ÎÃæ¤Ë¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Î»Ø¼¨¤ò½ñ¤¯¤È¤¤¤¦ÅÀ¤¬°ã¤Ã¤Æ¤¤¤ë¡£

°Ê²¼¤Ë»Í¼ïÎà¤Î½ÐÎÏ¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤ÎÎã¡¢ ½ÐÎϤò¥Õ¥¡¥¤¥ë¤ËÁ÷¤Ã¤¿¤ê¡¢¥Õ¥¡¥¤¥ë¤ËÄɲä·¤¿¤ê¡¢ ¥Ñ¥¤¥×¤òÄ̤·¤ÆÂ¾¤Î¥³¥Þ¥ó¥É¤Ë½ÐÎϤ·¤¿¤ê¡¢ ¥³¥×¥í¥»¥¹¤Ë½ÐÎϤ¹¤ë¤â¤Î¤òµó¤²¤ë¡£ ¤³¤ì¤é¤ÎÎã¤Ç¤Ïprintʸ¤¬»È¤ï¤ì¤Æ¤¤¤ë¤¬¡¢ printfʸ¤ò»È¤Ã¤Æ¤âƱ¤¸¤è¤¦¤Ëưºî¤¹¤ë¡£

print items > output-file

¤³¤Î½ñ¼°¤Î¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ç¤Ï¥¢¥¤¥Æ¥à¤Î½ÐÎϤòoutput-file ¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¹Ô¤¦¡£ ¥Õ¥¡¥¤¥ë̾ output-file¤Ï¼°¤Ç¤¢¤Ã¤Æ¤â¤«¤Þ¤ï¤Ê¤¤¡£ ¼°¤òʸ»úÎó¤ËÊÑ´¹¤·¡¢¤½¤Î¸å¤Ë¥Õ¥¡¥¤¥ë̾¤È¤·¤Æ»ÈÍѤ¹¤ë (see section ¼°)¡£

¤³¤Î½ñ¼°¤Î¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤ÏºÇ½é¤Î½ÐÎϤò¹Ô¤¦Á°¤Ë¡¢ output-file¤Îºï½ü¤ò¼Â¹Ô¤¹¤ë¡£ °Ê¸å¤Ïoutput-file ¤Îºï½ü¤Ï¤·¤Ê¤¤¤Ç¥Õ¥¡¥¤¥ë¤ËÄɲ乤ë·Á¤Ç½ÐÎϤò¹Ô¤¦¡£ ¤â¤·output-file ¤¬Â¸ºß¤·¤Ê¤±¤ì¤Ð¥Õ¥¡¥¤¥ë¤¬¿·¤¿¤ËºîÀ®¤µ¤ì¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¼¡¤Ëµó¤²¤ëawk¥×¥í¥°¥é¥à¤ÏBBS¤Î̾Á°¤Î¥ê¥¹¥È¤ò `name-list'¤È¤¤¤¦Ì¾Á°¤Î¥Õ¥¡¥¤¥ë¤Ë¡¢ ÅÅÏÃÈÖ¹æ¤Î¥ê¥¹¥È¤ò`phone-list'¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤Ë¤½¤ì¤¾¤ì½ÐÎϤ¹¤ë¡£ ½ÐÎϤµ¤ì¤¿¥Õ¥¡¥¤¥ë¤Î³Æ¹Ô¤Ï¡¢°ì¤Ä¤Î̾Á°¤¢¤ë¤¤¤ÏÈÖ¹æ¤Ç¹½À®¤µ¤ì¤ë¡£

 
$ awk '{ print $2 > "phone-list"
>        print $1 > "name-list" }' BBS-list
$ cat phone-list
-| 555-5553
-| 555-3412
…
$ cat name-list
-| aardvark
-| alpo-net
…
   

¤½¤ì¤¾¤ì¤Î½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï°ì¹Ô¤Ë°ì¤Ä¤Î̾Á°¤â¤·¤¯¤ÏÈֹ椬ÃÖ¤«¤ì¤ë¡£

print items >> output-file

¤³¤Î¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ï¡¢½ÐÎϤòoutput-file¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¹Ô¤¦¡£ Àè¤Û¤É¤Î`>'¤Ç¤Î»ØÄê¤È°ã¤¦¤Î¤Ï¡¢ output-file¤Îºï½ü¤¬¹Ô¤ï¤ì¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ½ÐÎϤϥե¡¥¤¥ë¤ËÄɲ䵤ì¤ë·Á¤Ç¹Ô¤ï¤ì¤ë¡£ output-file¤¬Â¸ºß¤·¤Æ¤¤¤Ê¤±¤ì¤Ð¡¢ºîÀ®¤µ¤ì¤ë¡£

print items | command

¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ½ÐÎϤò¡¢¥Õ¥¡¥¤¥ë¤ËÂФ·¤Æ¹Ô¤¦Âå¤ï¤ê¤Ë¥Ñ¥¤¥×¤òÄ̤·¤ÆÅϤ¹»ö¤¬¤Ç¤­¤ë¡£ ¤³¤Î¤ä¤êÊý¤Î¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ï command¤Ø¤Î¥Ñ¥¤¥×¤ò¥ª¡¼¥×¥ó¤·¡¢ ¤½¤Î¥Ñ¥¤¥×¤òÄ̤·¤Æ¡¢ command¤ò¼Â¹Ô¤¹¤ë°Ù¤Ëºî¤é¤ì¤¿¥×¥í¥»¥¹¤Ø items¤ÎÃͤò½ÐÎϤ¹¤ë¡£

¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Î°ú¿ôcommand¤Ïawk¤Î¼°¤Ç¤âÎɤ¤¡£ ¤½¤Î¼°¤ÎÃͤϥ³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Îʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤ë¡£ ¼¡¤ÎÎã¤Ç¤ÏÆó¤Ä¤Î¥Õ¥¡¥¤¥ë¤¬ºî¤é¤ì¤ë¡£°ì¤Ä¤Ï¥½¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤BBS¤Î̾Á°¤Î¥ê¥¹¥È¡£ ¤â¤¦°ì¤Ä¤Ï¥¢¥ë¥Õ¥¡¥Ù¥Ã¥È¤Î¹ß½ç¤Ë¥½¡¼¥È¤µ¤ì¤¿¥ê¥¹¥È¤Ç¤¢¤ë¡£

 
awk '{ print $1 > "names.unsorted"
       command = "sort -r > names.sorted"
       print $1 | command }' BBS-list
   

¤³¤ÎÎã¤Î¥½¡¼¥È¤µ¤ì¤Æ¤¤¤Ê¤¤¥ê¥¹¥È¤Ï¡¢¥½¡¼¥ÈºÑ¤ß¥ê¥¹¥È¤¬¥Ñ¥¤¥×¤òÄÌ¤Ã¤Æ sort¥æ¡¼¥Æ¥£¥ê¥Æ¥£¤¬½ÐÎϤ¹¤ë´Ö¤Ë¡¢Ä̾ï¤Î¥ê¥À¥¤¥ì¥¯¥È¤Ç½ñ¤­¹þ¤Þ¤ì¤ë¡£

¼¡¤ÎÎã¤Ï¥ê¥À¥¤¥ì¥¯¥È¤ò»È¤Ã¤Æ¡¢ ¥á¥¤¥ê¥ó¥°¥ê¥¹¥È`bug-system'¤Ë½¾¤Ã¤Æ¥á¥¤¥ë¤òÁ÷¤ë¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤Ï¥È¥é¥Ö¥ë¤Ë¤¢¤Ã¤¿¤È¤­¤Ë¡¢ ¥·¥¹¥Æ¥à¥á¥ó¥Æ¥Ê¥ó¥¹¤Î°Ù¤ËÄê´üŪ¤Ëawk ¥¹¥¯¥ê¥×¥È¤ò¼Â¹Ô¤¹¤ë¤è¤¦¤Ê¾ì¹ç¤ËÊØÍø¤À¤í¤¦¡£

 
report = "mail bug-system"
print "Awk script failed:", $0 | report
m = ("at record number " FNR " of " FILENAME)
print m | report
close(report)
   

¥á¥Ã¥»¡¼¥¸¤Ïʸ»úÎóÏ¢ÀܤÈÊÑ¿ôm¤ËÊÝ»ý¤µ¤ì¤Æ¤¤¤ëÆâÍÆ¤ò»È¤Ã¤ÆÁȤßΩ¤Æ¤é¤ì¤Æ¤¤¤ë¡£ ºîÀ®¤µ¤ì¤¿¥á¥Ã¥»¡¼¥¸¤Ï¥Ñ¥¤¥×¥é¥¤¥ó¤òÄ̤·¤Æmail¥×¥í¥°¥é¥à¤ËÁ÷¤é¤ì¤ë (¥«¥Ã¥³¤ÏÏ¢Àܤ¹¤Ù¤­¥¢¥¤¥Æ¥à¤ò¤Þ¤È¤á¤Æ¤¤¤ë --- ʸ»úÎóÏ¢Àܤò»²¾È)¡£

¤³¤³¤Çclose´Ø¿ô¤ò¸Æ¤ó¤Ç¤¤¤ë¤Î¤Ï¡¢¥Ñ¥¤¥×¤òÊĤ¸¤Æ¤¹¤°¤Ë½ÐÎϤòÁ÷¤ë¤¿¤á¤Ç¤¢¤ë¡£ ¾Ü¤·¤¤¤³¤È¤Ï See section Æþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥È¤ò¥¯¥í¡¼¥º¤¹¤ë¡£

¤³¤ÎÎã¤Ï¥Õ¥¡¥¤¥ë¤ä¥³¥Þ¥ó¥É¤òÍ¿¤¨¤ë¤Î¤ËÊÑ¿ô¤ò»È¤Ã¤Æ¤¤¤ë¡£ ¤Ä¤Þ¤ê¾ï¤Ëʸ»úÎóÄê¿ô¤ò»È¤¦¡¢¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ awk ¤¬Ëè²óƱ¤¸Ê¸»úÎóÃͤòÍ׵᤹¤ë¤Î¤Ç¡¢ ÊÑ¿ô¤ò»È¤¦¤È¤¤¤¦¤Î¤Ï°ìÈ̤ˤϤ¤¤¤¥¢¥¤¥Ç¥¢¤Ç¤¢¤ë¡£

print items |& command

¤³¤Î¥¿¥¤¥×¤Î¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ï¥¢¥¤¥Æ¥à¤òcommand¤ÎÆþÎϤËÂФ·¤Æ½ÐÎϤ¹¤ë¡£ `|'¤Ë¤è¤ë¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ïcommand¤Î½ÐÎϤò getline¤ò»È¤Ã¤ÆÆÉ¤ß½Ð¤¹¤³¤È¤¬¤Ç¤­¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢command¤Ï¥³¥×¥í¥»¥¹¤Ç¤¢¤ê ¸Æ¤Ó½Ð¤·¸µ¤È°ì½ï¤Ëưºî¤¹¤ë¤±¤ì¤É¤âawk¥×¥í¥°¥é¥à¤ÎÇÛ²¼¤Ë¤¢¤ë¡£

¤³¤Îµ¡Ç½¤Ïgawk¤Î³ÈÄ¥¤Ç¤¢¤ê¡¢POSIX awk¤Ç¤Ï »È¤¦¤³¤È¤¬¤Ç¤­¤Ê¤¤¡£¤è¤ê´°Á´¤ÊÀâÌÀ¤ÏSee section Two-Way Communications with Another Process¡£

`>', `>>', `|', `|&' ¤ò»È¤Ã¤Æ½ÐÎϤò¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¤È¤­¤Ë¡¢ file ¤ä command¤¬¤½¤ì¤Þ¤Ç¤Ë¥×¥í¥°¥é¥àÃæ¤Ç »È¤Ã¤Æ¤¤¤Ê¤«¤Ã¤¿¤ê½ÐÎϤ¹¤ëľÁ°¤Ë¥¯¥í¡¼¥º¤ò¹Ô¤Ã¤Æ¤¤¤¿¤ê¤¹¤ë¤È¡¢ ¥Õ¥¡¥¤¥ë¤ä¥Ñ¥¤¥×¤ò¥ª¡¼¥×¥ó¤¹¤ë¤¿¤á¤Ë¥·¥¹¥Æ¥à¤ËÌ䤤¹ç¤ï¤»¤ò¹Ô¤¦¡£

ºÇ½é¤Îprint¤Î¥Õ¥¡¥¤¥ë¤Ø¤Î½ÐÎϤÇ`>'¤ò»È¤¤¡¢ ¤½¤Î¸å¤Î½ÐÎϤË`>>'¤ò»È¤¦¤Î¤Ï¤¢¤ê¤¬¤Á¤Ê´Ö°ã¤¤¤Ç¤¢¤ë:

 
# ¥Õ¥¡¥¤¥ë¤ò¥¯¥ê¥¢¤¹¤ë
print "Don't panic" > "guide.txt"
…
# ÄɲÃ
print "Avoid improbability generators" >> "guide.txt"
   

¤³¤ì¤Ï¥·¥§¥ë¤Ë¤ª¤¤¤Æ¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤ò¹Ô¤¦¤È¤­¤Ë¤Ïɬ¿Ü¤Ç¤¢¤ë¤¬¡¢ awk¤Ë¤ª¤¤¤Æ¤ÏɬÍפʤ¤¡£ ¤³¤Î¤è¤¦¤Ê¾ì¹ç¡¢½ÐÎÏ¥Õ¥¡¥¤¥ë¤Ï¤¿¤À°ìÅÙ¤À¤±¥ª¡¼¥×¥ó¤µ¤ì¤ë¤Î¤Ç ¤¹¤Ù¤Æ¤Îprintʸ¤Ç`>'¤ò»È¤¦¤Ù¤­¤Ç¤¢¤ë¡£

¤¹¤Ç¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë (see section Points to Remember About getline)¡¢ ¿¤¯¤Î ¿¤¯¤Î awk¤Î¼ÂÁõ¤Ç¤Ïawk¥×¥í¥°¥é¥à¤¬¥ª¡¼¥×¥ó¤Ç¤­¤ë¥Ñ¥¤¥×¥é¥¤¥ó¤Î¿ô¤¬ ¤¿¤À°ì¤Ä¤ËÀ©¸Â¤µ¤ì¤Æ¤¤¤ë! gawk¤Ç¤Ï¡¢¤½¤Î¤è¤¦¤ÊÀ©¸Â¤Ï¤Ê¤¤¡£ »ÈÍѤ·¤Æ¤¤¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤¬µö¤¹¤À¤±¥Ñ¥¤¥×¥é¥¤¥ó¤ò¥ª¡¼¥×¥ó¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

Advanced Notes: Piping into sh

ÆÃ¤Ë¶¯ÎϤʥê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Î»È¤¤Êý¤È¤¤¤¦¤Î¤Ï¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤òÁȤßΩ¤Æ¤Æ ¤½¤ì¤ò¥·¥§¥ë(sh)¤ËÂФ·¤Æ¥Ñ¥¤¥×¤ÇÁ÷¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë̾¤¬Âçʸ»ú¤Ç³ÊǼ¤µ¤ì¤ë¥·¥¹¥Æ¥à¤«¤é ¥Õ¥¡¥¤¥ë¤Î¥ê¥¹¥È¤ò»ý¤Ã¤Æ¤­¤Æ¤½¤ì¤ò¤¹¤Ù¤Æ¾®Ê¸»ú¤Î̾Á°¤ËÉÕ¤±Âؤ¨¤¿¤¤¤È ¤·¤è¤¦¡£°Ê²¼¤Î¥×¥í¥°¥é¥à¤Ï¤½¤ì¤ò¸úΨ¤è¤¯¤ä¤Ã¤Æ¤¯¤ì¤ë:

 
{ printf("mv %s %s\n", $0, tolower($0)) | "sh" }

END { close("sh") }
   

tolower´Ø¿ô¤Ï¤½¤Î°ú¿ô¤ÎÃæ¤ÎÂçʸ»ú¤òÁ´¤Æ¾®Ê¸»ú¤ËÊÑ´¹¤·¤Æ ÊÖ¤¹(see section ʸ»úÎóÁàºî´Ø¿ô)¡£ ¤³¤Î¥×¥í¥°¥é¥à¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¤Î¥ê¥¹¥È¤ò¹½ÃÛ¤¹¤ë¡£ ¤½¤·¤Æ¤½¤Î¥ê¥¹¥È¤ò¥·¥§¥ë¤ËÂФ·¤ÆÁ÷¤Ã¤Æ¼Â¹Ô¤µ¤»¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.7 gawk ¤Ë¤ª¤±¤ë ÆÃ¼ì¤Ê ¥Õ¥¡¥¤¥ë̾

gawk¤ÏÆâÉôŪ¤Ë²ò¼á¤µ¤ì¤ëÆÃ¼ì¤Ê¥Õ¥¡¥¤¥ë̾¤ò¿ô¿¤¯Ä󶡤·¤Æ¤¤¤ë¡£ ¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë̾¤Ïɸ½à¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¡¢¥×¥í¥»¥¹´Ø·¸¤Î¾ðÊó¡¢ TCP/IP¥Í¥Ã¥È¥ï¡¼¥­¥ó¥°¤ËÂФ¹¤ë¥¢¥¯¥»¥¹¤òÄ󶡤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.7.1 ɸ½à¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Î¤¿¤á¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë

¼Â¹ÔÃæ¤Î¥×¥í¥°¥é¥à¤Ï¡¢´·½¬Åª¤Ë»°¤Ä¤ÎÆþ½ÐÎÏ¥¹¥È¥ê¡¼¥à¤ò²¿¤â¤·¤Ê¤¯¤Æ¤âÆÉ¤ß¹þ¤ß¡¢ ½ñ¤­¹þ¤ß¤Î¤¿¤á¤Ë»È¤¨¤ë¤è¤¦¤Ë¤Ê¤Ã¤Æ¤¤¤ë¡£ ¤½¤ì¤é¤Ïɸ½àÆþÎÏ, ɸ½à½ÐÎÏ, ɸ½à¥¨¥é¡¼½ÐÎϤȤ·¤ÆÃΤé¤ì¤Æ¤¤¤ë¡£ ¤³¤ì¤é¤Î¥¹¥È¥ê¡¼¥à¤Ï¥Ç¥Õ¥©¥ë¥È¤Ç¥¿¡¼¥ß¥Ê¥ë¤ÎÆþ½ÐÎϤ˳ä¤êÅö¤Æ¤é¤ì¤Æ¤¤¤ë¡£ ¤·¤«¤·¡¢¤·¤Ð¤·¤Ð¥·¥§¥ë¤Ç¤Î¥ê¥À¥¤¥ì¥¯¥È¤Ë¤è¤Ã¤Æ ¡Ê`<', `<<',`>', `>>', `>&', `|' ¤È¤¤¤Ã¤¿¥ª¥Ú¥ì¡¼¥¿¤ò»È¤Ã¤Æ¡Ë¡¢ Êѹ¹¤µ¤ì¤ë¡£É¸½à¥¨¥é¡¼½ÐÎϤϥ¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤Î½ÐÎϤˤÀ¤±»È¤ï¤ì¤ë¡£ ¤½¤ì¤Ï¡¢É¸½à½ÐÎÏ¡¢É¸½à¥¨¥é¡¼½ÐÎÏ¤ÎÆó¤Ä¤Î¥¹¥È¥ê¡¼¥à¤¬¤¢¤ê¡¢ ÊÌ¡¹¤Ë¥ê¥À¥¤¥ì¥¯¥È¤ò¹Ô¤¦»ö¤¬²Äǽ¤Ç¤¢¤ë¤«¤é¤Ç¤¢¤ë¡£

¾¤Îawk½èÍý·Ï¤Ç¤Ï¡¢¼¡¤Î¤è¤¦¤ÊÊýË¡¤Ç¤·¤« awk¥×¥í¥°¥é¥à¤«¤é ɸ½à¥¨¥é¡¼½ÐÎϤ˥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë»ö¤¬¤Ç¤­¤Ê¤¤¡£

 
print "Serious error detected!" | "cat 1>&2"
   

¤³¤ì¤Ïɸ½à¥¨¥é¡¼½ÐÎϤ˥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤Ë¥Ñ¥¤¥×¤ò³«¤¤¤Æ awk¥×¥í¥»¥¹¤Î½ÐÎϤòÅϤ·¤Æ¤¤¤ë¡£¤³¤ì¤Ï¥¨¥ì¥¬¥ó¥È¤È¤Ï¸À¤¤Æñ¤¤¤·¡¢ ¾¤Î¥×¥í¥»¥¹¤òɬÍפȤ¹¤ëÈó¸úΨŪ¤Ê¤ä¤êÊý¤Ç¤¢¤ë¡£ ¿¤¯¤Î¿Í¤Ï¤³¤ÎÅÀ¤Ë¤¢¤Þ¤êµ¤¤ò»È¤Ã¤Æ¤¤¤Ê¤¤¤è¤¦¤Êawk ¥×¥í¥°¥é¥à¤ò½ñ¤¤¤Æ¤¤¤ë¡£ ¤³¤¦¤¤¤Ã¤¿¤ä¤êÊý¤ËÂ夨¤Æ¡¢¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò¼¡¤Î¤è¤¦¤Ë¤·¤Æ¥¿¡¼¥ß¥Ê¥ë¤ËÁ÷¤ë¡£

 
print "Serious error detected!" > "/dev/tty"
   

¤³¤ì¤Ï¿¤¯¤Î¾ì¹çƱ¤¸·ë²Ì¤È¤Ê¤ë¤À¤í¤¦¤¬¡¢¾ï¤Ë¤Ç¤Ï¤Ê¤¤¡£ ɸ½à¥¨¥é¡¼½ÐÎϤÏÄ̾ïüËö¤Ç¤¢¤ë¤¬¡¢¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¡¢ ¤½¤Î¾ì¹ç¤Ë¤Ï½ÐÎϤÏüËö¤ËÂФ·¤Æ¤Ï¹Ô¤ï¤ì¤Ê¤¤¡£ »ö¼Â¡¢awk¤ò¥Ð¥Ã¥¯¥°¥é¥¦¥ó¥É¥¸¥ç¥Ö¤Ç¼Â¹Ô¤¹¤ë¤È¡¢ ¤½¤Î¥×¥í¥»¥¹¤ÏüËö¤ò»ý¤Ã¤Æ¤ª¤é¤º¡¢`/dev/tty'¤Î¥ª¡¼¥×¥ó¤Ï¼ºÇÔ¤¹¤ë¡£

gawk¤Ï»°¤Ä¤Îɸ½à¥¹¥È¥ê¡¼¥à¤Ë¥¢¥¯¥»¥¹¤¹¤ë¤¿¤á¤ËÆÃ¼ì¤Ê¥Õ¥¡¥¤¥ë̾¤ò»ý¤Ã¤Æ¤¤¤ë¡£ gawk¤ÇÆþ½ÐÎϤò¥ê¥À¥¤¥ì¥¯¥È¤¹¤ë¤È¤­¤Ë¥ê¥À¥¤¥ì¥¯¥ÈÀè¤Î¥Õ¥¡¥¤¥ë̾¤¬ ¼¡¤ÎÆÃ¼ì¤Ê̾Á°¤ÎÃæ¤Ë¤¢¤ì¤Ð¡¢¥Õ¥¡¥¤¥ë̾¤ÎÂå¤ï¤ê¤Ë gawk¤ÏľÀÜ(ÄêµÁ¤µ¤ì¤Æ¤¤¤ë)¥¹¥È¥ê¡¼¥à¤ò»ÈÍѤ¹¤ë¡£ ¤³¤ì¤é¤ÎÆÃ¼ì¤Ê¥Õ¥¡¥¤¥ë̾¤Ïgawk¤¬°Ü¿¢¤µ¤ì¤Æ¤¤¤ëÁ´¤Æ¤Î ¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Çưºî¤¹¤ë¤¬¡¢POSXI½àµò¤Î¤â¤Î¤Ç¤Ï¤Ê¤¤:

`/dev/stdin'

ɸ½àÆþÎÏ (¥Õ¥¡¥¤¥ëµ­½Ò»Ò 0)¡£

`/dev/stdout'

ɸ½à½ÐÎÏ (¥Õ¥¡¥¤¥ëµ­½Ò»Ò 1)¡£

`/dev/stderr'

ɸ½à¥¨¥é¡¼½ÐÎÏ (¥Õ¥¡¥¤¥ëµ­½Ò»Ò 2)¡£

`/dev/fd/N'

¥Õ¥¡¥¤¥ëµ­½Ò»Ò N ¤Ë·ë¤ÓÉÕ¤±¤é¤ì¤¿¥Õ¥¡¥¤¥ë¡£¤½¤Î¥Õ¥¡¥¤¥ë¤Ï awk¤ò¼Â¹Ô¤·¤¿¥×¥í¥°¥é¥à(ŵ·¿Åª¤Ë¤Ï¥·¥§¥ë)¤Ë¤è¤Ã¤Æ ¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ gawk¤¬µ¯Æ°¤µ¤ì¤¿ ¥·¥§¥ë¤Ë¤è¤Ã¤ÆÆÃÊ̤ʤ³¤È¤¬¹Ô¤ï¤ì¤Æ¤¤¤Ê¤¤¸Â¤ê¡¢µ­½Ò»Ò 0, 1, 2 ¤À¤±¤¬»ÈÍѲÄǽ¤Ç¤¢¤ë¡£

`/dev/stdin', `/dev/stdout', `/dev/stderr'¤È¤¤¤Ã¤¿ ¥Õ¥¡¥¤¥ë̾¤Ï`/dev/fd/0', `/dev/fd/1', `/dev/fd/2'¤Î ÊÌ̾¤Ç¤¢¤ë¡£¤·¤«¤·¡¢¤è¤êÀâÌÀŪ¤Ê̾Á°¤Ç¤¢¤ë¡£ gawk¥×¥í¥°¥é¥à¤Ç¥¨¥é¡¼¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ëŬÀÚ¤ÊÊýË¡¤Ï `/dev/stderr'¤ò°Ê²¼¤Î¤è¤¦¤Ë¤·¤Æ»È¤¦¤³¤È¤Ç¤¢¤ë:

 
print "Serious error detected!" > "/dev/stderr"
   

¥Õ¥¡¥¤¥ë̾¤Î¼þ¤ê¤ò¥¯¥©¡¼¥È¤Ç¤¯¤¯¤Ã¤Æ¤¤¤ë¤³¤È¤ËÃí°Õ¡£ ¾¤Î¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤ÈƱÍÍ¡¢¤½¤ÎÃͤÏʸ»úÎó¤Ç¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ ¥¯¥©¡¼¥È¤ò¾Êά¤·¤Æ¤·¤Þ¤¦¤Î¤Ï¤¢¤ê¤¬¤Á¤Ê´Ö°ã¤¤¤Ç¤¢¤ê¡¢ ¤½¤Î¾ì¹çº®Í𤹤ë·ë²Ì¤È¤Ê¤ë¤À¤í¤¦¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.7.2 ¥×¥í¥»¥¹¤Ë´ØÏ¢¤·¤¿¾ðÊó¤Î¤¿¤á¤Î¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë

gawk¤Ïgawk¥×¥í¥»¥¹¤¬¼Â¹Ô¤µ¤ì¤Æ¤¤¤ë¾ðÊó¤Ë ¥¢¥¯¥»¥¹¤¹¤ë¤³¤È¤Î¤Ç¤­¤ëÆÃ¼ì¤Ê¥Õ¥¡¥¤¥ë̾¤âÄ󶡤·¤Æ¤¤¤ë¡£ ¤³¤ì¤é¤Î¡È¥Õ¥¡¥¤¥ë¡É¤Ï¾ðÊó¤Î¥ì¥³¡¼¥É¤ò°ì¤Ä»ý¤Ã¤Æ¤¤¤ë¡£ ÆóÅٰʾåÆÉ¤ß½Ð¤¹¤Ë¤Ï¡¢ºÇ½é¤Ëclose´Ø¿ô¤Ç¥¯¥í¡¼¥º¤»¤Í¤Ð¤Ê¤é¤Ê¤¤ (see section Æþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥È¤ò¥¯¥í¡¼¥º¤¹¤ë)¡£ ¥Õ¥¡¥¤¥ë̾¤Ï°Ê²¼¤Î¤È¤ª¤ê:

`/dev/pid'

¤³¤Î¥Õ¥¡¥¤¥ë¤òÆÉ¤à¤È¥«¥ì¥ó¥È¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹ ID ¤¬ ½½¿Ê·Á¼°¤Ç²þ¹Ô¤Ç½ªÃ¼¤µ¤ì¤ÆÊ֤äƤ¯¤ë¡£

`/dev/ppid'

¤³¤Î¥Õ¥¡¥¤¥ë¤òÆÉ¤à¤È¡¢¥«¥ì¥ó¥È¥×¥í¥»¥¹¤Î¿Æ¥×¥í¥»¥¹ID¤¬½½¿Ê¿ô¤Ç¡¢ ²þ¹Ô¤Ç½ªÃ¼¤µ¤ì¤ÆÊ֤äƤ¯¤ë¡£

`/dev/pgrpid'

¤³¤Î¥Õ¥¡¥¤¥ë¤òÆÉ¤à¤È¡¢¥«¥ì¥ó¥È¥×¥í¥»¥¹¤Î¥×¥í¥»¥¹¥°¥ë¡¼¥×ID¤¬½½¿Ê¿ô¤Ç¡¢ ²þ¹Ô¤Ç½ªÃ¼¤µ¤ì¤ÆÊ֤äƤ¯¤ë¡£

`/dev/user'

¤³¤Î¥Õ¥¡¥¤¥ë¤òÆÉ¤à¤È¡¢²þ¹Ô¤Ç½ªÃ¼¤µ¤ì¥¹¥Ú¡¼¥¹¤Ç¶èÀÚ¤é¤ì¤¿¥Õ¥£¡¼¥ë¥É¤ò »ý¤Ä°ì¤Ä¤Î¥ì¥³¡¼¥É¤¬Ê֤äƤ¯¤ë¡£¤½¤Î¥Õ¥£¡¼¥ë¥É¤Ï°Ê²¼¤Î¤è¤¦¤Ê¾ðÊó¤òɽ¤·¤Æ¤¤¤ë¤â¤Î¤Ç¤¢¤ë:

$1

getuid¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤¹ÃÍ(¼Â¥æ¡¼¥¶¡¼IDÈÖ¹æ)¡£

$2

geteuid¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤¹ÃÍ(¼Â¸ú¥æ¡¼¥¶¡¼IDÈÖ¹æ)¡£

$3

getgid¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤¹ÃÍ(¼Â¥°¥ë¡¼¥×IDÈÖ¹æ)¡£

$4

etgid¥·¥¹¥Æ¥à¥³¡¼¥ë¤ÎÊÖ¤¹ÃÍ(¼Â¸ú¥°¥ë¡¼¥×IDÈÖ¹æ)¡£

¤µ¤é¤ËÄɲäΥե£¡¼¥ë¥É¤¬¤¢¤ë¤Ê¤é¡¢ getgroups¥·¥¹¥Æ¥à¥³¡¼¥ë¤¬ÊÖ¤·¤¿¥°¥ë¡¼¥×ID¤Ç¤¢¤ë (Multiple ¥°¥ë¡¼¥×¤Ï¤¹¤Ù¤Æ¤Î¥·¥¹¥Æ¥à¤Ç¥µ¥Ý¡¼¥È¤µ¤ì¤Æ¤¤¤ë¤ï¤±¤Ç¤Ï¤Ê¤¤)¡£

¤³¤ì¤é¤ÎÆÃ¼ì¥Õ¥¡¥¤¥ë̾¤Ï¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Ç¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤Î¤è¤¦¤Ë»È¤Ã¤Æ¤â¤è¤¤¤·¡¢ awk¥×¥í¥°¥é¥à¤ÎÃæ¤ÇÆþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ç»È¤Ã¤Æ¤â¤è¤¤¡£ ¤¿¤À¤·¡¢`-f'¥ª¥×¥·¥ç¥ó¤òȼ¤Ã¤¿¥½¡¼¥¹¥Õ¥¡¥¤¥ë¤È¤·¤Æ¤Ï»È¤¦¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£

Ãí°Õ: ¤³¤ì¤é¤Î¥×¥í¥»¥¹´Ø·¸¤Î¾ðÊó¤òÄ󶡤¹¤ëÆÃ¼ì¥Õ¥¡¥¤¥ë¤Ïº£¤Ç¤Ï »þÂåÃÙ¤ì(obsolete)¤Ê¤â¤Î¤Ç¡¢¼¡¤Îgawk¤Î¥ê¥ê¡¼¥¹¤Ç¤Ï ´°Á´¤Ë¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤À¤í¤¦¡£ gawk¤Ï¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë¤ò»È¤¦¤¿¤Ó¤Ë·Ù¹ð¤Î¥á¥Ã¥»¡¼¥¸¤ò½ÐÎϤ¹¤ë¡£ ¥×¥í¥»¥¹´Ø·¸¤Î¾ðÊó¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢ÇÛÎó PROCINFO¤ò»ÈÍѤ¹¤ë¡£ See section ¾ðÊó¤òÅÁ㤹¤ëÁȤ߹þ¤ßÊÑ¿ô,


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.7.3 ¥¹¥Ú¥·¥ã¥ë¥Õ¥¡¥¤¥ë for Network Communications

gawk¤Î¥Ð¡¼¥¸¥ç¥ó 3.1¤«¤é¡¢awk¥×¥í¥°¥é¥à¤Ç ÁÐÊý¸þ¤ÎTCP/IP¥³¥Í¥¯¥·¥ç¥ó¤ò¥ª¡¼¥×¥ó¤¹¤ë¤³¤È¤¬²Äǽ¤È¤Ê¤ê ¥¯¥é¥¤¥¢¥ó¥È¤ä¥µ¡¼¥Ð¡¼¤È¤·¤Æ¿¶Éñ¤¦¤³¤È¤¬¤Ç¤­¤ë¤è¤¦¤Ë¤Ê¤Ã¤¿¡£ ¤³¤ì¤Ï°Ê²¼¤Î·Á¼°¤ÎÆÃ¼ì¤Ê¥Õ¥¡¥¤¥ë̾¤ò»È¤Ã¤Æ¹Ô¤¦:

 
`/inet/¥×¥í¥È¥³¥ë/¥í¡¼¥«¥ë¥Ý¡¼¥È/¥ê¥â¡¼¥È¥Û¥¹¥È/¥ê¥â¡¼¥È¥Ý¡¼¥È'
   

Full discussion is delayed until ¥×¥í¥È¥³¥ë¤Ï`tcp', `udp', `raw'¤Î¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£ ¤½¤·¤Æ¤½¤Î¾¤Î¥Õ¥£¡¼¥ë¥É¤ÏºîÀ®¤¹¤ë¥Í¥Ã¥È¥ï¡¼¥¯¥³¥Í¥¯¥·¥ç¥ó¤Î¤¿¤á¤Î ¾ðÊó¤È¤Ê¤ë¡£¤³¤ì¤é¤Î¥Õ¥¡¥¤¥ë̾¤Ï`|&'±é»»»Ò¤ò»È¤Ã¤Æ ¥³¥×¥í¥»¥¹¤È¤ÎÄÌ¿®¤ò¹Ô¤¦(see section Two-Way Communications with Another Process)¡£ ¤³¤ì¤ÏȯŸŪ¤Êµ¡Ç½¤Ç¤¢¤ê¡¢¤³¤³¤Ç¤Ï´°Á´À­¤Î¤¿¤á¤Ë¤Î¤ß¼è¤ê¾å¤²¤Æ¤¤¤ë¡£ ´°Á´¤ÊÀâÌÀ¤ÏUsing gawk for Network Programming¤Ë¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.7.4 Special ¥Õ¥¡¥¤¥ë̾ Caveats

°Ê²¼¤Ïgawk¤¬Ä󶡤¹¤ëÆÃ¼ì¤Ê¥Õ¥¡¥¤¥ë̾¤ò»È¤¦ºÝ¤Î Ãí°Õ»ö¹à¤Î¥ê¥¹¥È¤Ç¤¢¤ë:


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

4.8 Æþ½ÐÎϤΥê¥À¥¤¥ì¥¯¥È¤ò¥¯¥í¡¼¥º¤¹¤ë

¤â¤·Æ±¤¸¥Õ¥¡¥¤¥ë̾¤äƱ¤¸¥·¥§¥ë¥³¥Þ¥ó¥É¤¬¡¢ awk¥×¥í¥°¥é¥à¤Î¼Â¹ÔÃæ¤ËÆóÅٰʾågetline (see section getline¤ò»È¤Ã¤¿ÆþÎÏ) ¤È°ì½ï¤Ë»È¤ï¤ì¤¿¾ì¹ç¡¢¥Õ¥¡¥¤¥ë¤Î¥ª¡¼¥×¥ó¤ä¥³¥Þ¥ó¥É¤Î¼Â¹Ô¤ÏºÇ½é¤Î°ì²ó¤À¤±¹Ô¤ï¤ì¤ë¡£ ¤Ä¤Þ¤êºÇ½é¤Ë¥Õ¥¡¥¤¥ë¤ä¥³¥Þ¥ó¥É¤«¤é¥ì¥³¡¼¥É¤òÆÉ¤ß¹þ¤à¤È¤­¤Ç¤¢¤ë¡£ ¼¡¤Ëgetline¤ò»È¤Ã¤ÆÆÉ¤à¤È¤­¤ÏƱ°ì¤Î¥Õ¥¡¥¤¥ë¡¢¥³¥Þ¥ó¥É¤«¤éÊ̤Υ쥳¡¼¥É¤òÆÉ¤ß¹þ¤à¡£

ƱÍͤ˥ե¡¥¤¥ë¤ä¥Ñ¥¤¥×¤¬½ÐÎϤΤ¿¤á¤Ë¥ª¡¼¥×¥ó¤µ¤ì¤¿¤È¤­¡¢ awk¤Ï(¥ª¡¼¥×¥ó¤·¤¿¾ðÊó¤ò)¤½¤Î¥Õ¥¡¥¤¥ë̾¤ä¥³¥Þ¥ó¥É̾¤È·ë¤ÓÉÕ¤±¡¢ ¸å¤Ë¤Ê¤Ã¤Æ½ÐÎϤ·¤¿¤È¤­¤Ë¤½¤Î½ÐÎϤò¤½¤ì¤Þ¤Ç¤Î¤â¤Î¤ËÄɲ乤ë·Á¤Ç¹Ô¤¦¡£ ¥Õ¥¡¥¤¥ë¤ä¥Ñ¥¤¥×¤Ïawk¤¬½ªÎ»¤¹¤ë¤Þ¤Ç¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤ë¡£

¤³¤Î¤³¤È¤Ë¤è¤Ã¤Æ¡¢Æ±¤¸¥Õ¥¡¥¤¥ë¤òºÆ¤ÓºÇ½é¤«¤éÆÉ¤ß»Ï¤á¤¿¤¤¤È¤­¤ä¡¢ ¥·¥§¥ë¥³¥Þ¥ó¥É¤òºÆ¼Â¹Ô¡Ê¥³¥Þ¥ó¥É¤Î½ÐÎϤ«¤é¤â¤Ã¤ÈÆÉ¤ß¤À¤·¤¿¤¤¤È¤­¡Ë ¤·¤¿¤¤¤è¤¦¤Ê¤È¤­¤Ë¤ÏÆÃÊ̤ʼê½ç¤òƧ¤Þ¤Í¤Ð¤Ê¤é¤Ê¤¤¡£ ¤Ä¤Þ¤ê¡¢¼¡¤ÎÎã¤Î¤è¤¦¤Ëclose´Ø¿ô¤ò»È¤ï¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

 
close(filename)
   

or:

 
close(command)
   

°ú¿ôfilename¤äcommand¤ÏǤ°Õ¤Î¼°¤Ç¤¢¤Ã¤Æ¤è¤¤¡£¤½ ¤ÎÃͤϡ¢¥Õ¥¡¥¤¥ë¤ò¥ª¡¼¥×¥ó¤·¤¿¤ê¥³¥Þ¥ó¥É¤òµ¯Æ°¤·¤¿Ê¸»úÎó¤È (¥¹¥Ú¡¼¥¹¤ä¾¤Î"irrelevant" (̵´Ø·¸)¤Ê¥­¥ã¥é¥¯¥¿¤â´Þ¤á¤Æ) Àµ³Î¤Ë°ìÃפ·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£ Î㤨¤Ð¡¢¼¡¤Î¤è¤¦¤Ë¥Ñ¥¤¥×¤ò¥ª¡¼¥×¥ó¤·¤¿¤é¡¢

 
"sort -r names" | getline foo
   

¼¡¤Î¤è¤¦¤Ë¥¯¥í¡¼¥º¤·¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤¡£

 
close("sort -r names")
   

°ìÅÙ¤³¤Î´Ø¿ô¸Æ¤Ó¤À¤·¤¬¼Â¹Ô¤µ¤ì¤ë¤È¡¢ ¼¡¤Î¥Õ¥¡¥¤¥ë¤ä¥³¥Þ¥ó¥É¤«¤é¤Îgetline¤ä¡¢ ¥Õ¥¡¥¤¥ë¤ä¥³¥Þ¥ó¥É¤ËÂФ¹¤ëprint¡¢printf¤Ï¡¢ ¥Õ¥¡¥¤¥ë¤ÎºÆ¥ª¡¼¥×¥ó¤ä¥³¥Þ¥ó¥É¤ÎºÆ¼Â¹Ô¤ò¹Ô¤¦¡£ ¥Õ¥¡¥¤¥ë¤ä¥Ñ¥¤¥×¥é¥¤¥ó¤ò¥¯¥í¡¼¥º¤¹¤ë¤Î¤Ë»È¤¦¼°¤Ï¤½¤ì¤é¤Î ¥Õ¥¡¥¤¥ë¥ª¡¼¥×¥ó¤¹¤ë¤È¤­¤ä¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤È¤­¤Ë»È¤Ã¤¿¼°¤ÈÀµ³Î¤Ë°ìÃפ·¤Ê¤±¤ì¤Ð ¤Ê¤é¤Ê¤¤¤Î¤Ç¡¢¥Õ¥¡¥¤¥ë̾¤ä¥³¥Þ¥ó¥É¤òÊÑ¿ô¤Ë³ÊǼ¤¹¤ëÎý½¬¤ËÎɤ¤¡£ Àè¤ÎÎã¤Ï°Ê²¼¤Î¤è¤¦¤Ëµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë:

 
sortcom = "sort -r names"
sortcom | getline foo
…
close(sortcom)
   

¤³¤ì¤Ï¡¢awk¥×¥í¥°¥é¥à¤Ë¸«¤Ä¤±¤Å¤é¤¤ÂǤÁ´Ö°ã¤¤¤Î¥¨¥é¡¼ (typographical errors)¤¬Æþ¤ê¹þ¤à¤Î¤òËɤ°¤Î¤ËÌòΩ¤Ä¡£ °Ê²¼¤Ë½ÐÎÏ¥Õ¥¡¥¤¥ë¤ò¥¯¥í¡¼¥º¤¹¤ëɬÍפ¬¤¢¤ë¤«¤â¤·¤ì¤Ê¤¤Íýͳ¤ò´ö¤Ä¤«µó¤²¤ë:

¥·¥¹¥Æ¥à¤¬¥ª¡¼¥×¥ó¤¹¤ë¤³¤È¤òµö¤·¤Æ¤¤¤ë°Ê¾å¤Î¿ô¤Î¥Õ¥¡¥¤¥ë¤ò»È¤ª¤¦¤·¤¿¾ì¹ç¡¢ gawk¤Ï»È¤Ã¤Æ¤¤¤ë¥Ç¡¼¥¿¥Õ¥¡¥¤¥ë¤ÎÃæ¤Ç¿½Å¥ª¡¼¥×¥ó¤ò»î¤ß¤ë¡£ gawk¤Î¤³¤ì¤ò¹Ô¤¦Ç½ÎϤϤ¢¤Ê¤¿¤¬»È¤Ã¤Æ¤¤¤ë¥ª¥Ú¥ì¡¼¥Æ¥£¥ó¥°¥·¥¹¥Æ¥à¤Î ǽÎϤ˰͸¤¹¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¥Õ¥¡¥¤¥ë¤ò»È¤¤¤ª¤ï¤Ã¤¿¤é¾ï¤Ëclose ¤¹¤ë¤È¤¤¤¦¤³¤È¤¬¤è¤¤¤ä¤êÊý¤Ç¤¢¤ë¤·¡¢°Ü¿¢À­¤Î¤¿¤á¤Ë¤è¤¤¤Î¤Ç¤¢¤ë¡£ »ö¼Â¡¢Â¿¤¯¤Î¥Ñ¥¤¥×¤ò»È¤Ã¤Æ¤¤¤ë¤È¤­¤Ë¤Ï¥³¥Þ¥ó¥É¤¬½ªÎ»¤·¤¿¤é ¤½¤ì¤ò¥¯¥í¡¼¥º¤¹¤ë¤³¤È¤Ï¸úΨ¤¬¤è¤¤¡£¤¿¤È¤¨¤Ð°Ê²¼¤ÎÎã¤ò¹Í¤¨¤Æ¤ß¤è¤¦:

 
{
    …
    command = ("grep " $1 " /some/file | my_prog -q " $3)
    while ((command | getline) > 0) {
        process output of command
    }
    # ¤³¤³¤Ë close(command) ¤¬É¬Í×
}
   

¤³¤ÎÎã¤Ï¤½¤ì¤¾¤ì¤Î¥ì¥³¡¼¥ÉÃæ¤Î¥Ç¡¼¥¿¤Ë´ð¤Å¤¤¤Æ¿·¤·¤¤¥Ñ¥¤¥×¥é¥¤¥ó¤ò ºî¤ë¡£¥³¥á¥ó¥È¤Ç¼¨¤·¤Æ¤¤¤ë¤è¤¦¤Ëclose¤¬¤Ê¤±¤ì¤Ð¡¢ awk¤Ï¥³¥Þ¥ó¥É¤ò¼Â¹Ô¤¹¤ë¤¿¤á¤Ë»Ò¥×¥í¥»¥¹¤òÀ¸À®¤·¤Æ ¥Ñ¥¤¥×¥é¥¤¥ó¤ò¤½¤ì°Ê¾åºî¤ì¤Ê¤¯¤Ê¤Ã¤Æ¤·¤Þ¤¦¤Þ¤Ç¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤ò »È¤Ã¤Æ¤·¤Þ¤¦¡£

³Æ¥³¥Þ¥ó¥É¤¬¼Â¹Ô½ªÎ»¤·¤¿(getline¤Î¥¹¥Æ¡¼¥¿¥¹¤Ç¥Õ¥¡¥¤¥ë¤Î½ªÃ¼¤¬ ¼¨¤µ¤ì¤¿)¤È¤·¤Æ¤â¡¢»Ò¥×¥í¥»¥¹¤Ï½ªÎ»¤·¤Ê¤¤(21)¡£ ¤è¤ê½ÅÍפʤ³¤È¤Ï¡¢¥Ñ¥¤¥×¤Î¤¿¤á¤Î¥Õ¥¡¥¤¥ë¥Ç¥£¥¹¥¯¥ê¥×¥¿¤Ï close¤¬¸Æ¤Ó½Ð¤µ¤ì¤ë¤«awk¤¬¼Â¹Ô½ªÎ»¤¹¤ë¤Þ¤Ç ²òÊü¤µ¤ì¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£

close¤Ï¥Õ¥¡¥¤¥ë¤òɽ¤¹°ú¿ô¤ä ¥ê¥À¥¤¥ì¥¯¥·¥ç¥ó¤Ë¤è¤Ã¤Æ¥ª¡¼¥×¥ó¤µ¤ì¤¿¥Ñ¥¤¥×¡¢»Ò¥×¥í¥»¥¹ ¤òɽ¤¹°ú¿ô¤¬Í¿¤¨¤é¤ì¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤Ï¤Ê¤Ë¤â¤·¤Ê¤¤¡£

`close(FILENAME)'¤¬ ¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇÍ¿¤¨¤é¤ì¤¿¥Õ¥¡¥¤¥ë¤Î̾Á°¤òÄ̤¸¤ÆÆÉ¤ß¹þ¤ó¤Ç¤¤¤ë °ÅÌۤΥ롼¥×¤ËÂФ·¤Æ¡¢¡ÈËâ½ÑŪ¤Ê¡É ¸ú²Ì¤ò¤â¤Ã¤Æ¤¤¤Ê¤¤¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£ ¤³¤Î¾ì¹ç¤â¡¢¥ª¡¼¥×¥ó¤µ¤ì¤Æ¤¤¤Ê¤¤¥Õ¥¡¥¤¥ë¤ò¥¯¥í¡¼¥º¤¹¤ë¤³¤È¤Ë¤Ê¤ë¤Î¤Ç awk¤Ï¤Ê¤Ë¤â¤·¤Ê¤¤¡£

¥³¥×¥í¥»¥¹¤ËÂФ·¤Æ`|&'¤ò»È¤Ã¤ÆÄÌ¿®¤ò¤·¤Æ¤¤¤ë¤È¤­¡¢ ÁÐÊý¸þ¥Ñ¥¤¥×¤ÎÊÒÊý¤À¤±¤ò¤â¤¦ÊÒÊý¤ò¥¯¥í¡¼¥º¤»¤º¤Ë¥¯¥í¡¼¥º¤¹¤ë¤³¤È¤Ï ¤È¤Æ¤âÊØÍø¤Ç¤¢¤ë¡£¤³¤ì¤Ïclose¤ËÆóÈÖÌܤΰú¿ô¤òÍ¿¤¨¤ë¤³¤È¤Ç ¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£¤½¤Î¾¤Îclose¤ÈƱ¤¸¤è¤¦¤Ë¡¢ Âè°ì°ú¿ô¤Ï¥³¥×¥í¥»¥¹¤òµ¯Æ°¤¹¤ë¤Î¤Ë»ÈÍѤ·¤¿ ¥³¥Þ¥ó¥É¤Î̾Á°¤«ÆÃ¼ì¥Õ¥¡¥¤¥ë¤Î̾Á°¤Ç¤¢¤ë¡£ ÂèÆó°ú¿ô¤Ïʸ»úÎó¤Ç¡¢¤½¤ÎÃͤÏ"to"¤«"from"¤Î ¤¤¤º¤ì¤«¤Ç¤¢¤ë¡£Â羮ʸ»ú¤Î°ã¤¤¤Ï°ÕÌ£¤ò»ý¤¿¤Ê¤¤¡£ ¤³¤ì¤ÏȯŸŪµ¡Ç½¤Ç¤¢¤ë¤Î¤Ç¡¢¾ÜºÙ¤ÏTwo-Way Communications with Another Process¤Ç¹Ô¤¦¡£

Advanced Notes: Using close's Return Value

Unix ¾å¤Îawk¤Î¿¤¯¤Ï¡¢close ´Ø¿ô¤Ï¼ÂºÝ¤Ë¤Ïʸ¤Ç¤¢¤ë¡£ close¤«¤é¤ÎÌá¤êÃͤò»È¤ª¤¦¤È¤¹¤ë¤È¹½Ê¸¥¨¥é¡¼¤È¤Ê¤ë: (d.c.)

 
command = "…"
command | getline info
retval = close(command)  # ÂçÉôʬ¤Î Unix ¤Î awk ¤Ç¤Ï¹½Ê¸¥¨¥é¡¼¤Ë¤Ê¤ë
   

gawk¤Ïclose¤ò´Ø¿ô¤È¤·¤Æ¼è¤ê°·¤¦¡£ ¤½¤ÎÌá¤êÃͤϥ¯¥í¡¼¥º¤ËÀ®¸ù¤·¤¿»þ0¤Ç¤¢¤ê¡¢¼ºÇÔ¤·¤¿¤È¤­¤Ë¤Ï0°Ê³°¤Ç¤¢¤ë¡£ ¼ºÇÔ¤·¤¿¾ì¹ç¤Ë¤Ïgawk¤ÏÁȤ߹þ¤ßÊÑ¿ôERRNO¤Ë ¥¨¥é¡¼¤ÎȯÀ¸¤ò¼¨¤¹Ê¸»úÎ󤬥»¥Ã¥È¤¹¤ë¡£

gawk¤Ç¤Ï¡¢¥Ñ¥¤¥×¤ä¥³¥×¥í¥»¥¹(¤ÎÆþÎϤ«½ÐÎÏ)¤ò ¥¯¥í¡¼¥º¤·¤¿¤È¤­¡¢¤½¤ÎÌá¤êÃͤϥ³¥Þ¥ó¥É¤Î½ªÎ»¥¹¥Æ¡¼¥¿¥¹ ¤Ç¤¢¤ë¡£(22) ¤½¤ì°Ê³°¤Î¾ì¹ç¡¢Æþ½ÐÎϤΥե¡¥¤¥ë¤ò¥¯¥í¡¼¥º¤·¤¿¤È¤­¤Î ¥·¥¹¥Æ¥à¤Îclose¤â¤·¤¯¤ÏC ´Ø¿ôfclose¤Î Ìá¤êÃͤǤ¢¤ë¡£¤³¤ÎÃͤϥ¯¥í¡¼¥º¤ËÀ®¸ù¤·¤¿¤È¤­¤Ë¤Ï¥¼¥í¡¢ ¼ºÇÔ¤·¤¿¤È¤­¤Ï-1¤Ç¤¢¤ë¡£

POSIXɸ½à¤Ï¤â¤Ã¤ÈÛ£Ëæ¤Ç¤¢¤ë¡£¤½¤³¤Ç¤Ïclose¤Ï À®¸ù¤Î¤È¤­¤Ë¥¼¥í¡¢¤½¤¦¤Ç¤Ê¤¤¤È¤­¤ËÈó¥¼¥í¤òÊÖ¤¹¤È¤·¤«½ñ¤¤¤Æ¤¤¤Ê¤¤¡£ °ìÈÌŪ¤Ë¤Ï¡¢°Û¤Ê¤ë¼ÂÁõ¤Ç¤Ï¥Ñ¥¤¥×¤ò¥¯¥í¡¼¥º¤·¤¿¤È¤­¤Ë °Û¤Ê¤ëÃͤˤʤ롣¤·¤¿¤¬¤Ã¤ÆÌá¤êÃͤò°Ü¿¢À­¤Î¤¢¤ë¤â¤Î¤È¤·¤Æ »È¤¦¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£(d.c.)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5. ¼°

¼°¤È¤Ïawk¤Î¥Ñ¥¿¡¼¥ó¤È¥¢¥¯¥·¥ç¥ó¤Î´ðËܹ½À®¥Ö¥í¥Ã¥¯¤Ç¤¢¤ë¡£ ¼°¤Ï½ÐÎϤ·¤¿¤ê¡¢¸¡ºº¤·¤¿¤ê¡¢´Ø¿ô¤ËÅϤ¹ÃͤȤ·¤ÆÉ¾²Á¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤ì¤Ë²Ã¤¨¤Æ¡¢¼°¤ÏÂåÆþ±é»»»Ò¤ò»È¤Ã¤ÆÊÑ¿ô¤ä¥Õ¥£¡¼¥ë¥É¤Î¿·¤·¤¤ÃͤȤ·¤ÆÂåÆþ ÂåÆþ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

¼°¤Ï¥Ñ¥¿¡¼¥ó¤ä¥¢¥¯¥·¥ç¥ó¤È¤·¤Æ»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤½¤Î¾¤Î¤Û¤È¤ó¤É¤Îʸ¤ÏÁàºî¤¹¤Ù¤­Æó¤Ä°Ê¾å¤Î¼°¤òÍ­¤·¤Æ¤¤¤ë¡£ ¾¤Î¸À¸ì¤ÈƱÍÍ¡¢awk¤Ë¤ª¤±¤ë¼°¤ÏÊÑ¿ô¡¢ÇÛÎó¤Î»²¾È¡¢ Äê¿ô¡¢´Ø¿ô¸Æ¤Ó½Ð¤·¤È¤³¤ì¤é¤Î±é»»»Ò¤ò»È¤Ã¤¿ÁȤ߹ç¤ï¤»¤ò´Þ¤ó¤Ç¤¤¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1 Äê¿ô¼°

¤â¤Ã¤È¤âñ½ã¤Ê¼°¤ÏÄê¿ô¤Ç¤¢¤ë¡£¤³¤ì¤Ï¾ï¤ËƱ¤¸Ãͤò»ý¤Ä¡£ Äê¿ô¤Ë¤Ï»°¼ïÎढ¤ê¡¢¿ôÃÍÄê¿ô¡¢Ê¸»úÎóÄê¿ô¡¢Àµµ¬É½¸½Äê¿ô¤Ç¤¢¤ë

¤³¤ì¤é¤Ï¤½¤ì¤¾¤ì¡¢¥Ç¡¼¥¿¤ÎÃͤ¬É¬ÍפȤʤ俤Ȥ­¤ËŬÀÚ¤Êʸ̮¤Ç»È¤ï¤ì¤ë¡£ ¿ôÃÍÄê¿ô¤Ï°Û¤Ê¤ë·Á¼°¤ò¤â¤Ä¤³¤È¤¬¤Ç¤­¤ë¤¬¡¢ÆâÉôŪ¤Ë¤Ï Ʊ°ì¤Î¤â¤Î¤È¤·¤Æ³ÊǼ¤µ¤ì¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1.1 ¿ôÃÍÄê¿ô¤Èʸ»úÎóÄê¿ô

¿ôÃÍÄê¿ô¤Ï¿ô¤ò°ÕÌ£¤¹¤ë¡£¤³¤Î¿ô¤ÏÀ°¿ô¤Ç¤âÎɤ¤¤·¡¢ ¾®¿ô¤Ç¤âÎɤ¤¤·²Ê³Ø(»Ø¿ô)ɽµ­¤Î¿ô¤Ç¤¢¤Ã¤Æ¤âÎɤ¤(23)¡£ °Ê²¼¤Ë¿ôÃÍÄê¿ô¤ÎÎã¤ò¤¤¤¯¤Ä¤«µó¤²¤ë¡£¤³¤ì¤é¤Ï¤¹¤Ù¤ÆÆ±¤¸Ãͤò»ý¤Ä¡£

 
105
1.05e+2
1050e-1
   

ʸ»úÎóÄê¿ô¤ÏÆó½Å°úÍÑÉä¤Ç°Ï¤Þ¤ì¤¿¥­¥ã¥é¥¯¥¿¤ÎʤӤ«¤é¹½À®¤µ¤ì¤ë¡£¤¿¤È¤¨¤Ð¡¢

 
"parrot"
   

¤³¤ì¤Ï`parrot'¤È¤¤¤¦¹½À®¤Îʸ»úÎó¤Ç¤¢¤ë¡£ gawk¤Ë¤ª¤±¤ëʸ»úÎó¤Ï¡¢Ç¤°Õ¤ÎŤµ¤ÎASCII¤ÎNUL(¥­¥ã¥é¥¯¥¿¥³¡¼¥É 0)¤â´Þ¤á¤¿ Ǥ°Õ¤Î8bit ASCII¥­¥ã¥é¥¯¥¿¡¼¤ò»È¤¦¤³¤È¤¬²Äǽ¤Ç¤¢¤ë¡£ ¾¤Îawk½èÍý·Ï¤Ç¤Ï°ìÉô¤Î¥­¥ã¥é¥¯¥¿¥³¡¼¥É¤ò°·¤¦¤³¤È¤¬Æñ¤·¤¤¤«¤â¤·¤ì¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1.2 Ȭ¿Ê¿ô»ú¤ª¤è¤Ó½½Ï»¿Ê¿ô»ú

awk¤Ç¤Ï¡¢Á´¤Æ¤Î¿ôÃͤϽ½¿Ê¿ô¤Ç¤¢¤ë¡£ ¾¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Î¿¤¯¤Ç¤ÏÊ̤δð¿ô¡¢È¬¿Ê¿ô¤Ç¤¢¤ë¤È¤« ½½Ï»¿Ê¿ô¤ò»È¤Ã¤Æ¿ôÃͤò»ØÄꤹ¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ Ȭ¿Ê¿ô¤Ç¤Ï¡¢¿ô»ú¤Ï0, 1, 2, 3, 4, 5, 6, 7, 10, 11, 12 ¤È¿Ê¤à¡£ `11'¤Ï½½¿Ê¿ô¤Ç¤Ï1³Ý¤±¤ë10­¤¹1¤Ç`11'¤Ç¤¢¤ë¤¬¡¢ Ȭ¿Ê¿ô¤Ç¤Ï1³Ý¤±¤ë8­¤¹1¤Ç¤³¤ì¤Ï½½¿Ê¿ô¤Î9¤ËÅù¤·¤¤¡£ ½½Ï»¿Ê¿ô¤Ç¤Ï¿ô»ú¤¬16¸Ä¤¢¤ë¡£½½¿Ê¤Ç¤Ï¿ô»ú¤Ï10¸Ä¤·¤«¤Ê¤¤(`0'--`9') ¤Î¤Ç¡¢»Ä¤ê¤Î¿ô»ú¤òɽ¤¹¤Î¤Ë`a'¤«¤é`f'¤Þ¤Ç¤Îʸ»ú¤¬ÍѤ¤¤é¤ì¤ë (Â羮ʸ»ú¤Î¶èÊ̤Ϥµ¤ì¤Ê¤¤¤Î¤Ç¡¢½½Ï»¿Ê¿ô»ú¤Î`a'¤È`A'¤Ï ÃͤȤ·¤Æ¤ÏƱ¤¸¤Ç¤¢¤ë)¡£¤·¤¿¤¬¤Ã¤Æ¡¢½½Ï»¿Ê¤Ç¤Ï1³Ý¤±¤ë16­¤¹1¤Ç½½¿Ê¿ô¤Î17¤È¤Ê¤ë¡£

¤¿¤Àñ¤Ë`11'¤È½ñ¤«¤ì¤Æ¤¤¤ë¤È¤­¡¢¤½¤Î´ð¿ô¤¬¤Ê¤ó¤Ç¤¢¤ë¤«¤òȽÊ̤¹¤ë¤³¤È¤Ï ¤Ç¤­¤Ê¤¤¡£¤·¤¿¤¬¤Ã¤ÆC¤äC++¡¢C¤«¤éÇÉÀ¸¤·¤¿¸À¸ì¤Ç¤Ï ´ð¿ô¤ò¼±Ê̤¹¤ë¤¿¤á¤ÎÆÃÊ̤ʵ­Ë¡¤¬¤¢¤ë¡£ Ȭ¿Ê¿ôÃͤÏÀèÆ¬¤Ë`0'¤òÃÖ¤­¡¢½½Ï»¿Ê¿ôÃͤˤÏÀèÆ¬¤Ë `0x'¤«`0X'¤òÃÖ¤¯:

11

½½¿Ê¿ôÃÍ11¡¥

011

Ȭ¿Ê¤Î11¡¢½½¿Ê¤Î9¡£

0x11

½½Ï»¿Ê¤Î11¡¢½½¿Ê¤Î17¡£

°Ê²¼¤ÎÎã¤Ï¤³¤ì¤é¤Î°ã¤¤¤òÌÀ³Î¤Ë¤¹¤ë:

 
$ gawk 'BEGIN { printf "%d, %d, %d\n", 011, 11, 0x11 }'
-| 9, 11, 17
   

Ȭ¿ÊÄê¿ô¤ä½½Ï»¿ÊÄê¿ô¤¬²Äǽ¤Ê¤³¤È¤Ï¡¢ ¥Ð¥¤¥Ê¥ê¥Ç¡¼¥¿¤Î¤è¤¦¤ÊÄ̾ï¤Î¥­¥ã¥é¥¯¥¿¤ä¿ôÃͤȤ·¤ÆÉ½¸½¤¹¤ë¤³¤È¤Î ¤Ç¤­¤Ê¤¤¤è¤¦¤Ê¥Ç¡¼¥¿¤ò°·¤¦¤È¤­¤ËÊØÍø¤Ç¤¢¤ë¡£

gawk allows the use of octal and hexadecimal gawk¤Ï¥×¥í¥°¥é¥à¥Æ¥­¥¹¥È¤ÎÃæ¤ÇȬ¿Ê¤ä½½Ï»¿Ê¤ÎÄê¿ô¤ò°·¤¦¤³¤È¤ò µö¤·¤Æ¤¤¤ë¡£¤·¤«¤·¤Ê¤¬¤é¡¢¤½¤Î¤è¤¦¤Ê¿ôÃÍ¤ÏÆþÎϥǡ¼¥¿¤ÎÃæ¤Ë¤¢¤ë¾ì¹ç¤Ë¤Ï °Û¤Ê¤ë°·¤¤¤ò¼õ¤±¤ë¡£¤³¤ì¤Ï¥Ç¥Õ¥©¥ë¥È¤ÇȬ¿Ê¤ä½½Ï»¿Ê¤ÎÄê¿ô¤ò°·¤¦¤è¤¦¤Ë ¤·¤Æ¤·¤Þ¤¦¤È¸Å¤¤¥×¥í¥°¥é¥à¤Îưºî¤òÊѤ¨¤Æ¤·¤Þ¤¦¤«¤é¤Ç¤¢¤ë (¤â¤·ËÜÅö¤Ë¥Ç¥Õ¥©¥ë¥Èưºî¤òÊѤ¨¤¿¤¤¤Î¤Ê¤é¡¢`--non-decimal-data' ¥ª¥×¥·¥ç¥ó¤ò»ÈÍѤ¹¤ë¡£see section ½½¿Ê¤Ç¤Ê¤¤ÆþÎϥǡ¼¥¿¤òµö¤¹)¡£ Ȭ¿Ê¤ä½½Ï»¿Ê¤Î¥Ç¡¼¥¿¤¬¤¢¤ë¤Î¤Ê¤éstrtonum´Ø¿ô(see section ʸ»úÎóÁàºî´Ø¿ô) ¤ò»È¤Ã¤Æ¥Ç¡¼¥¿¤ò¿ôÃͤØÊÑ´¹¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤Û¤È¤ó¤É¤Î¾ì¹ç¡¢ÁȤ߹þ¤ß¤Î¥Ó¥Ã¥ÈÁàºî´Ø¿ô(see section gawk ¤Î¥Ó¥Ã¥ÈÁàºî´Ø¿ô)¤ò »È¤¦¤È¤­¤ËȬ¿Ê¤ä½½Ï»¿Ê¤ÎÄê¿ô¤ò»È¤¤¤¿¤¯¤Ê¤ë¤À¤í¤¦¡£

°ìÉô¤Î½é´ü¤ÎC¤Î¼ÂÁõ¤È°Û¤Ê¤ê¡¢`8'¤È`9'¤ÏÀµÅö¤ÊȬ¿Ê¿ôÃͤǤϤʤ¤¡£ gawk¤Ï`018'¤ò½½¿Ê¤Î18¤È¤·¤Æ°·¤¦:

 
$ gawk 'BEGIN { print "021 is", 021 ; print 018 }'
-| 021 is 17
-| 18
   

¥½¡¼¥¹¥³¡¼¥ÉÃæ¤ÎȬ¿Ê¤ä½½Ï»¿Ê¤ÎÄê¿ô¤Ïgawk¤Î³ÈÄ¥¤Ç¤¢¤ë¡£ gawk¤¬¸ß´¹¥â¡¼¥É(see section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¤Î¤È¤­¤Ë¤Ï »È¤¦¤³¤È¤Ï¤Ç¤­¤Ê¤¤¡£

Advanced Notes: A Constant's Base Does Not Affect Its Value

¿ôÃÍÄê¿ô¤òÆâÉôɽ¸½¤Ë°ìÅÙÊÑ´¹¤·¤Æ¤·¤Þ¤¦¤È¡¢gawk¤Ï ¤â¤È¤â¤È¤ÎÄê¿ô¤¬¤É¤Î´ð¿ô¤Çµ­½Ò¤µ¤ì¤¿¤â¤Î¤Ç¤¢¤ë¤«¤Ïµ­²±¤·¤Æ¤¤¤Ê¤¤¡£ ÆâÉôŪ¤ÊÃͤ¬¾ï¤Ë»È¤ï¤ì¤ë¡£¤³¤ì¤Ï¿ôÃͤ«¤éʸ»úÎ󤨤ÎÊÑ´¹¤Î¤È¤­¤Ë ½ÅÍפǤ¢¤ë:

 
$ gawk 'BEGIN { printf "0x11 is <%s>\n", 0x11 }'
-| 0x11 is <17>
   

[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.1.3 Àµµ¬É½¸½Äê¿ô

Àµµ¬É½¸½Äê¿ô¤Ï/^beginning and end$/¤Î¤è¤¦¤Ë¥¹¥é¥Ã¥·¥å¤Ç°Ï¤Þ¤ì¤Æµ­½Ò¤µ¤ì¤Æ¤¤¤ë Àµµ¬É½¸½¤Ç¤¢¤ë¡£awk¤Ç»È¤ï¤ì¤Æ¤¤¤ëÂçÉôʬ¤ÎÀµµ¬É½¸½¤ÏÄê¿ô¤Ç¤¢¤ë¤¬¡¢ `~' ¤ä `!~'¤È¤¤¤Ã¤¿¥Þ¥Ã¥Á¥ó¥°±é»»»Ò¤Ï ``ưŪ¤Ê'' Àµµ¬É½¸½(Àµµ¬É½¸½¤ò´Þ¤àÉáÄ̤Îʸ»úÎó¤ä¡¢ÊÑ¿ô)¤Ë»È¤¦¤³¤È¤â¤Ç¤­¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.2 Àµµ¬É½¸½Äê¿ô¤ò»È¤¦

`~' ¤ä `!~'¤È¤¤¤Ã¤¿±é»»»Ò¤Î±¦Â¦¤Ç»È¤ï¤ì¤¿¤È¤­¡¢ Àµµ¬É½¸½Äê¿ô¤Ïñ¤Ë¥Þ¥Ã¥Á¥ó¥°¤ò»î¤ß¤ëÀµµ¬É½¸½¤ò°ÕÌ£¤¹¤ë¤À¤±¤Ç¤¢¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢(/foo/¤Î¤è¤¦¤Ê)Àµµ¬É½¸½Äê¿ô¤Ïñ½ã¼°¤Î¤è¤¦¤Ë»È¤ï¤ì¤ë¾ì¹ç¤¬¤¢¤ë¡£ Àµµ¬É½¸½Äê¿ô¤¬¤½¤Î¤Þ¤Þ¤Ç¸½¤ì¤¿¤È¤­¡¢¤½¤ì¤Ï`($0 ~ /foo/)'¤Ç¤¢¤Ã¤¿¤Î¤È Ʊ¤¸°ÕÌ£¤Ë¤Ê¤ë (d.c.) See section ¥Ñ¥¿¡¼¥ó¤È¤·¤Æ¤Î¼°¡£ ¤³¤Î¤³¤È¤Ï¡¢

 
if ($0 ~ /barfly/ || $0 ~ /camelot/)
    print "found"
   

¤È

 
if (/barfly/ || /camelot/)
    print "found"
   

¤¬¤Þ¤Ã¤¿¤¯Æ±¤¸¤Ç¤¢¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¤³¤Î¥ë¡¼¥ë¤Ë¤è¤ë°ì¤Ä¤Î´ñ̯¤Ê·ë²Ì¤Ï¡¢ °Ê²¼¤Î¥Ö¡¼¥ë¼°¤¬¡¢ÀµÅö¤Ç¤¢¤ë¤¬¥æ¡¼¥¶¡¼¤¬Ë¾¤ó¤À¤â¤Î¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦ ¤â¤Î¤Ç¤¢¤ë¡£

 
# /foo/ ¤¬ ~ ¤Îº¸Â¦¤Ë¤¢¤ë¤³¤È¤ËÃí°Õ
if (/foo/ ~ $1) print "found foo"
   

¤³¤Î¥³¡¼¥É¤Ï``ÌÀ¤é¤«¤Ë''$1¤È/foo/¤È¤¤¤¦Àµµ¬É½¸½¤È¤Î ¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤Ê¤¦¤è¤¦¤Ë¸«¤¨¤ë¡£ ¤·¤«¤·¼ÂºÝ¤Ë¤Ï¤³¤Î`(/foo/ ~ $1)'¤È¤¤¤¦¼°¤Ï¡¢ `(($0 ~ /foo/) ~ $1)' ¤ÈƱ¤¸¤Ç¤¢¤ë¡£ ¸À¤¤´¹¤¨¤ë¤Ê¤é¤Ð¡¢ºÇ½é¤ËÆþÎϥ쥳¡¼¥É¤ËÂФ·¤Æ /foo/¤È¤¤¤¦Àµµ¬É½¸½¤òŬÍѤ¹¤ë¡£ ¤½¤Î·ë²Ì¤Ï0¤«1¤Î¤É¤Á¤é¤«¤Ç¤¢¤ê¡¢¥Þ¥Ã¥Á¤ÎÀ®Èݤˤè¤Ã¤Æ·èÄꤹ¤ë¡£ ¤½¤Î·ë²Ì¤ËÂФ·¤Æ¥ì¥³¡¼¥É¤ÎÂè°ì¥Õ¥£¡¼¥ë¥É¤òŬÍѤ·¤Æ¥Þ¥Ã¥Á¥ó¥°¤ò¹Ô¤Ê¤¦¡£ ¤³¤¦¤¤¤Ã¤¿Æ°ºî¤ÏËÜÅö¤Ë¥æ¡¼¥¶¡¼¤¬Ë¾¤ó¤Ç¤¤¤¿¥Æ¥¹¥È¤È¤Ï°ã¤Ã¤¿¤â¤Î¤Ç¤¢¤í¤¦¤«¤é¡¢ ¤³¤¦¤¤¤Ã¤¿Ê¸¤ò¥×¥í¥°¥é¥àÃæ¤Ç¸«¤Ä¤±¤ë¤È¡¢gawk¤Ï·Ù¹ð¤òȯ¤¹¤ë¡£ ¤â¤¦¤Ò¤È¤Ä¡¢¤³¤Îµ¬Â§¤Ë¤è¤ë·ë²Ì¤ÏÂåÆþʸ¤Ç¤âµ¯¤­¤ë¡£

 
matches = /foo/
   

assigns either zero or one to the variable matches, depending upon the contents of the current input record. This feature of the language has never been well documented until the POSIX specification. ¤³¤ÎÎã¤Ç¤ÏÊÑ¿ômatches¤Ë¡¢ ¥«¥ì¥ó¥ÈÆþÎϥ쥳¡¼¥É¤ÎÆâÍÆ¤Ë¤è¤Ã¤Æ0¤«1¤Î¤É¤Á¤é¤«¤¬ÂåÆþ¤µ¤ì¤ë¡£ ¸À¸ì¤Î¤³¤Îµ¡Ç½¤Ï¡¢POSIXɸ½à¤Þ¤Ç¥É¥­¥å¥á¥ó¥È²½¤µ¤ì¤Ê¤«¤Ã¤¿¡£

Àµµ¬É½¸½Äê¿ô¤Ï gensub, sub, gsub ¤È¤¤¤Ã¤¿´Ø¿ô¤ÎÂè°ì°ú¿ô¤È¤·¤Æ»ÈÍѤµ¤ì¡¢ ¤Þ¤¿¡¢match´Ø¿ô¤ÎÂèÆó°ú¿ô¤È¤·¤Æ»È¤ï¤ì¤ë (see section ʸ»úÎóÁàºî´Ø¿ô)¡£ gawk¤â´Þ¤á¤ÆºÇ¶á¤Îawk½èÍý·Ï¤Ç¤Ï¡¢ split´Ø¿ô¤ÎÂè»°°ú¿ô¤È¤·¤ÆÀµµ¬É½¸½Äê¿ô¤òµö¤·¤Æ¤¤¤ë¡£ °ìÉô¤Î¸Å¤¤½èÍý·Ï¤Ç¤Ï¤½¤¦¤Ç¤Ï¤Ê¤¤ (d.c.) ¤³¤ì¤Ï¡¢¥æ¡¼¥¶¡¼ÄêµÁ´Ø¿ô (see section ¥æ¡¼¥¶¡¼ÄêµÁ´Ø¿ô) ¤Î°ú¿ô¤È¤·¤ÆÀµµ¬É½¸½Äê¿ô¤ò»È¤ª¤¦¤È¤·¤¿¤È¤­¤Ëº®Íð¤ò°ú¤­µ¯¤³¤¹¡£Îã¤òµó¤²¤ë¤È¡¢

 
function mysub(pat, repl, str, global)
{
    if (global)
        gsub(pat, repl, str)
    else
        sub(pat, repl, str)
    return str
}

{
    …
    text = "hi! hi yourself!"
    mysub(/hi/, "howdy", text, 1)
    …
}
   

¤³¤ÎÎã¤Ç¤Ï¡¢¥×¥í¥°¥é¥Þ¡¼¤Ï¥æ¡¼¥¶¡¼ÄêµÁ´Ø¿ômysub¤Ë¤½¤ì¤òÄ̤·¤Æ sub ¤ä gsub¤ËÅϤµ¤ì¤ëÀµµ¬É½¸½Äê¿ô¤òÅϤ½¤¦¤È¤·¤Æ¤¤¤ë¡£ ¤·¤«¤·¤Ê¤¬¤é¡¢¼ÂºÝ¤Îưºî¤Ç¤Ïpat¥Ñ¥é¥á¡¼¥¿¤Ï1¤«0¤Ë¤Ê¤ê¡¢ ¤½¤ì¤Ï/hi/¤¬$0¤È¥Þ¥Ã¥Á¤¹¤ë¤«¤É¤¦¤«¤Ë°Í¸¤¹¤ë¡£ ¤³¤ì¤Ï¤ª¤½¤é¤¯¥æ¡¼¥¶¡¼¤¬ËÜÅö¤ËÅϤ½¤¦¤È¤·¤¿ÃͤȤϰۤʤ俤â¤Î¤Ç¤¢¤ë¤«¤é¡¢ gawk¤Ï¥æ¡¼¥¶¡¼ÄêµÁ´Ø¿ô¤ËÂФ¹¤ë¥Ñ¥é¥á¡¼¥¿¤ËÀµµ¬É½¸½Äê¿ô¤ò »È¤ª¤¦¤·¤¿¤È¤­¤Ë·Ù¹ð¤òȯ¤¹¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3 ÊÑ¿ô

ÊÑ¿ô¤È¤Ï¥×¥í¥°¥é¥à¤Î¤¢¤ë²Õ½ê¤Ç¡¢ ¸å¤«¤éÊ̤βսê¤Ç»²¾È¤¹¤ë¤¿¤á¤ËÃͤò³ÊǼ¤¹¤ëÊýË¡¤Ç¤¢¤ë¡£ ¥æ¡¼¥¶¡¼¤ÏÊÑ¿ô¤ò¥×¥í¥°¥é¥à¤Î¥Æ¥­¥¹¥È¤ÎÃæ¤Ç¼«Í³¤Ë°·¤¦¤³¤È¤¬¤Ç¤­¡¢ ¤Þ¤¿¡¢ÊÑ¿ô¤ËÂФ¹¤ëÃͤÎÂåÆþ¤òawk¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3.1 ¥×¥í¥°¥é¥àÃæ¤Ç¤ÎÊÑ¿ô¤Î»ÈÍÑ

ÊÑ¿ô¤Ë¤Ï¤¢¤È¤Ç¤½¤ÎÃͤò»²¾È¤¹¤ë¤¿¤á¤Ë̾Á°¤¬ÉÕ¤±¤é¤ì¤Æ¤¤¤ë¡£ ¤³¤ì¤Þ¤Ç¤Ë¤â¿¤¯¤ÎÎã¤ÇÊÑ¿ô¤¬½Ð¤Æ¤­¤¿¡£ ÊÑ¿ô¤Î̾Á°¤Ïʸ»ú¡¢¿ô»ú¡¢¤¢¤ë¤¤¤Ï¥¢¥ó¥À¡¼¥¹¥³¥¢¤ÎʤӤǤʤ±¤ì¤Ð¤Ê¤é¤º¡¢ ¤«¤Ä¡¢ÀèÆ¬¤¬¿ô»ú¤Ç¤¢¤Ã¤Æ¤Ï¤¤¤±¤Ê¤¤¡£ ÊÑ¿ô̾¤ÎÂ羮ʸ»ú¤Ï¶èÊ̤µ¤ì¡¢¤·¤¿¤¬¤Ã¤Æa ¤È A¤ÏÊ̤ÎÊÑ¿ô¤Ç¤¢¤ë¡£

ÊÑ¿ô̾¤Ï¤½¤ì¼«¿È¤¬¡¢ÊÑ¿ô¤Î¸½ºß¤ÎÃͤòɽ¤ï¤¹°ì¤Ä¤ÎÀµ¤·¤¤¼°¤Ç¤¢¤ë¡£ ÊÑ¿ô¤ÏÂåÆþ±é»»»Ò (assignment operators)¤ä Áý²Ã±é»»»Ò (increment operators)¡¢ ¸º¾¯±é»»»Ò (decrement operators) ¤Ë¤è¤Ã¤Æ¿·¤¿¤ÊÃͤòÍ¿¤¨¤é¤ì¤ë¡£See section ÂåÆþ¼°.

awk. ¤¹¤Ù¤Æ¤ÎÁȤ߹þ¤ßÊÑ¿ô¤Î̾Á°¤ÏÁ´ÂΤ¬Âçʸ»ú¤Ç¤¢¤ë¡£ °ìÉô¤ÎÊÑ¿ô¤Ï¤¢¤é¤«¤¸¤áÆÃÊ̤ʰÕÌ£¤ò»ý¤Ã¤Æ¤¤¤ë¤â¤Î¤¬¤¢¤ë¡£ ¥Õ¥£¡¼¥ë¥É¥»¥Ñ¥ì¡¼¥¿¤È¤·¤Æ¤ÎFS¤ä ¥«¥ì¥ó¥ÈÆþÎϥ쥳¡¼¥ÉÃæ¤Î¥Õ¥£¡¼¥ë¥É¿ô¤òɽ¤ï¤¹NF¤Ê¤É¤¬¤½¤ì¤Ç¤¢¤ë¡£ See section ÁȤ߹þ¤ßÊÑ¿ô. ¤Ë¤½¤¦¤¤¤Ã¤¿ÊÑ¿ô¤Î¥ê¥¹¥È¤¬¤¢¤ë¡£ ¤³¤ì¤éÁȤ߹þ¤ßÊÑ¿ô¤Ï¾¤ÎÊÑ¿ô¤Î¤è¤¦¤ËÂåÆþ¤·¤¿¤êÃͤò»²¾È¤·¤¿¤ê¤Ç¤­¤ë¤¬¡¢ ¤½¤ÎÃͤϼ«Æ°Åª¤Ëawk¤¬Êѹ¹¤·¤¿¤ê¡¢»È¤Ã¤¿¤ê¤¹¤ë¡£ ÁȤ߹þ¤ßÊÑ¿ô¤Î̾Á°¤Ï¤½¤ì¤¾¤ìÂçʸ»ú¤À¤±¤«¤é¤Ê¤ë¡£

awk¤Ç¤ÎÊÑ¿ô¤Ï¿ôÃͤǤâʸ»úÎó¤Ç¤âÂåÆþ¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¥Ç¥Õ¥©¥ë¥È¤Ç¤Ïʸ»úÎó¤Ï¶õʸ»úÎó¤Ç½é´ü²½¤µ¤ì¡¢ ¤½¤ì¤¬¿ôÃͤËÊÑ´¹¤µ¤ì¤ë¤È¤­¤Ë¤Ï 0¤È¤·¤Æ°·¤ï¤ì¤ë¡£ ¤³¤Î¤³¤È¤Ï¡¢awk¤Ç¤ÏC¤ä¤½¤Î¾¤Î¿¤¯¤Î¸À¸ì¤Î¤è¤¦¤Ë ÊÑ¿ô¤Î½é´ü²½¤òÍۤ˹Ԥ¦É¬Íפ¬¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.3.2 ¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤ÇÊÑ¿ô¤ËÂåÆþ¤¹¤ë

awk¤òµ¯Æ°¤·¤¿¤È¤­¤Ë¥³¥Þ¥ó¥É¥é¥¤¥ó¾å¤Î°ú¿ô¤Ë ÊÑ¿ôÂåÆþ(variable assignment) ¤ò´Þ¤á¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ Ǥ°Õ¤Îawk¤ÎÊÑ¿ô¤ËÃͤò¥»¥Ã¥È¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë (see section ¤½¤Î¾¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô)¡£ÂåÆþ¤Ï¼¡¤Î¤è¤¦¤Ê·Á¼°¤Ç¤¢¤ë¡£

 
variable=text
   

¤³¤¦¤¹¤ë¤³¤È¤Ë¤è¤Ã¤Æ¡¢ÊÑ¿ô¤ËÂФ¹¤ëÃͤΥ»¥Ã¥È¤òawk¤Îµ¯Æ°»þ¤« ÆþÎÏ¥Õ¥¡¥¤¥ë¤ÈÆþÎÏ¥Õ¥¡¥¤¥ë¤Î´Ö¤Ç¹Ô¤Ê¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ ¤³¤³¤Ç¡¢ÂåÆþ¤ÎÁ°¤Ë`-v'¤È¤¤¤¦¥ª¥×¥·¥ç¥ó¤ò¼¡¤Î¤è¤¦¤ËÉÕ¤±¤¿¾ì¹ç¡¢

 
-v variable=text
   

ÊÑ¿ô¤ËÂФ¹¤ëÃͤΥ»¥Ã¥È¤Ï°ìÈֺǽ顢BEGIN¥ë¡¼¥ë¤¬¼Â¹Ô¤µ¤ì¤ëÁ°¤Ë¹Ô¤Ê¤ï¤ì¤ë¡£ `-v'¥ª¥×¥·¥ç¥ó¤È¤½¤Î¸å¤ÎÂåÆþ¤Ï¤¹¤Ù¤Æ¤Î¥Õ¥¡¥¤¥ë̾¤Î°ú¿ô¤ÎÁ°¤Ë¤Ê¤±¤ì¤Ð¤Ê¤é¤º¡¢ ¤Þ¤¿¥×¥í¥°¥é¥à¥Æ¥­¥¹¥È¤¬¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇÍ¿¤¨¤é¤ì¤Æ¤¤¤ë¾ì¹ç¤Ë¤â¡¢ ¤½¤ì¤ÎÁ°¤Ë¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤ (`-v'¥ª¥×¥·¥ç¥ó¤Ë¤Ä¤¤¤Æ¤Î¾ÜºÙ¤ÏSee section ¥³¥Þ¥ó¥É¥é¥¤¥ó¥ª¥×¥·¥ç¥ó)¡£ ¤½¤¦¤Ç¤Ê¤¤¾ì¹ç¤Ë¤Ï¡¢ÊÑ¿ô¤ËÂФ¹¤ëÂåÆþ¤ÏÁ°¤Ë°ÌÃÖ¤·¤Æ¤¤¤ë ¥Õ¥¡¥¤¥ë̾¤ò¼¨¤¹°ú¿ô¤¬½èÍý¤µ¤ì¤¿¸å¤Ç¹Ô¤Ê¤ï¤ì¤ë¡£¤¿¤È¤¨¤Ð¡¢

 
awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list
   

¤³¤ÎÎã¤ÏÁ´¤Æ¤ÎÆþÎϥ쥳¡¼¥É¤Î¥Õ¥£¡¼¥ë¥ÉÈֹ椬n¤Î¥Õ¥£¡¼¥ë¥É¤ò½ÐÎϤ¹¤ë¡£ ºÇ½é¤Î¥Õ¥¡¥¤¥ë¤¬ÆÉ¤Þ¤ì¤ëÁ°¤Ë¡¢¥³¥Þ¥ó¥É¥é¥¤¥ó¤ÇÊÑ¿ôn¤Ë4¤¬¥»¥Ã¥È¤µ¤ì¤ë¡£ ¤³¤ì¤Ë¤è¤Ã¤Æ¡¢`inventory-shipped'¤«¤éÆþÎϤµ¤ì¤ë¥ì¥³¡¼¥É¤Î 4ÈÖÌܤΥե£¡¼¥ë¥É¤¬½ÐÎϤµ¤ì¤ë¡£ ºÇ½é¤Î¥Õ¥¡¥¤¥ë¤Î½èÍý¤¬½ª¤Ã¤¿¤¢¤È¡¢¤½¤·¤ÆÆóÈÖÌܤΥե¡¥¤¥ë¤Î½èÍý¤¬»Ï¤Þ¤ëÁ°¤Ë¡¢ n¤Ï2¤Ë¥»¥Ã¥È¤µ¤ì¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢`BBS-list'¤Î¥ì¥³¡¼¥É¤ÎÆóÈÖÌܤΥե£¡¼¥ë¥É¤¬½ÐÎϤµ¤ì¤ë

 
$ awk '{ print $n }' n=4 inventory-shipped n=2 BBS-list
-| 15
-| 24
…
-| 555-5553
-| 555-3412
…
   

¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô¤Ïawk¥×¥í¥°¥é¥àÃæ¤ÇARGV ¤È¤¤¤¦Ì¾Á°¤ÎÇÛÎó¤Ë¤è¤Ã¤Æ»²¾È¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë (see section ARGC ¤È ARGV ¤ò»È¤¦)¡£ awk¤Ï¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹¤Î¤¿¤á¤Ë¥³¥Þ¥ó¥É¥é¥¤¥ó¤Ç¤ÎÂåÆþ¤Î Ãͤò½èÍý¤¹¤ë(see section ¥¨¥¹¥±¡¼¥×¥·¡¼¥±¥ó¥¹)¡£ (d.c.)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.4 ʸ»úÎó¤È¿ôÃͤÎÊÑ´¹

awk¥×¥í¥°¥é¥à¤Îʸ̮¤Ë¤è¤ê¡¢É¬Íפ˱þ¤¸¤ÆÊ¸»úÎó¤ò¿ôÃͤËÊÑ´¹¤·¤¿¤ê¿ôÃͤòʸ»úÎó¤Ë ÊÑ´¹¤·¤¿¤ê¤¹¤ë¡£Î㤨¤Ð¡¢`foo + bar'¤È¤¤¤¦¼°¤¬¤¢¤Ã¤¿¤È¤­¤Ë¡¢ foo ¤« bar¤ÎÃ͡ʤ⤷¤¯¤ÏξÊý¡Ë¤¬Ê¸»úÎó¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢ ¤½¤ÎÃͤϲû»¤¬¹Ô¤ï¤ì¤ëÁ°¤Ë¿ôÃͤËÊÑ´¹¤µ¤ì¤ë¡£ µÕ¤Ëʸ»úÎóÏ¢·ëÃæ¤Ç¿ôÃͤ¬¤¢¤Ã¤¿¾ì¹ç¤Ë¤Ï¤½¤ì¤Ïʸ»úÎó¤ËÊÑ´¹¤µ¤ì¤ë¡£Îã¤òµó¤²¤ë¤È¡¢

 
two = 2; three = 3
print (two three) + 4
   

¤³¤ÎÎã¤Ï¿ôÃͤÎ27¤ò½ÐÎϤ¹¤ë¡£ÊÑ¿ô two ¤È three ¤Î¿ô¤È¤·¤Æ¤ÎÃͤÏʸ»úÎó¤ËÊÑ´¹¤µ¤ì¡¢¤½¤ì¤¬Ï¢·ë¤µ¤ì¤ë¡£ ¤½¤Î·ë²ÌÆÀ¤é¤ì¤¿Ê¸»úÎó¤ÏºÆÅÙ 23¤È¤¤¤¦¿ô¤ËÊÑ´¹¤µ¤ì¡¢¤½¤ì¤Ë4¤¬²Ã¤¨¤é¤ì¤ë¡£

²¿¤«¤ÎÍýͳ¤Ç¿ô¤ò¶¯À©Åª¤Ëʸ»úÎó¤ËÊÑ´¹¤·¤¿¤¤¤È¤­¤Ï¶õʸ»úÎó""¤ò¤¯¤Ã¤Ä¤±¤ë¡£ µÕ¤Ëʸ»úÎó¤ò¶¯À©Åª¤Ë¿ô¤ËÊÑ´¹¤¹¤ë¤Ë¤Ï¡¢Ê¸»úÎó¤Ë0¤ò²Ã¤¨¤ë¡£ ʸ»úÎó¤ÎƬ¤ÎÊý¤Ë¿ô»úÎ󤬤Ĥ¤¤Æ¤¤¤ë¤è¤¦¤Êʸ»úÎó¤Ïʸ»úÎ󤫤é¿ôÃͤËÊÑ´¹¤µ¤ì¤ë¡£ "2.5"¤Ï2.5¤Ë¡¢"1e3"¤Ï1000¤ËÊÑ´¹¤µ¤ì¡¢ "25fix"¤Ï¿ô¤ÎÃͤȤ·¤Æ25¤ò»ý¤Ä¡£ Àµ¤·¤¤¿ô¤È¤·¤ÆÇ§¼±¤Ç¤­¤Ê¤¤Ê¸»úÎó¤Ï0¤ËÊÑ´¹¤µ¤ì¤ë¡£

¿ôÃͤÎʸ»úÎ󤨤ÎÊÑ´¹¤Î¥ë¡¼¥ë¤Ï¡¢awk¤ÎÁȤ߹þ¤ßÊÑ¿ôCONVFMT (see section ÁȤ߹þ¤ßÊÑ¿ô)¤Ë¤è¤Ã¤ÆÀ©¸æ¤µ¤ì¤ë¡£ ¿ôÃͤϴؿôsprintf¤Ë½ñ¼°Ê¸»úÎó¤È¤·¤Æ CONVFMT¤¬ÅϤµ¤ì¤¿¤Î¤ÈƱ¤¸ÍͤËÊÑ´¹¤µ¤ì¤ë(see section ʸ»úÎóÁàºî´Ø¿ô)¡£

CONVFMT¤Î¥Ç¥Õ¥©¥ë¥È¤ÎÃͤÏ"%.6g"¤Ç¤¢¤ê¡¢ ¤³¤ì¤ÏÃͤòºÇÄã6ʸ»ú¤¢¤ë¤È¤·¤ÆÊÑ´¹¤¹¤ë¡£ °ìÉô¤Î¥¢¥×¥ê¥±¡¼¥·¥ç¥ó¤Î¤¿¤á¤Ë¤³¤ÎÀºÅÙ¤òÊѹ¹¤·¤¿¤¤¤È¹Í¤¨¤ë¤«¤âÃΤì¤Ê¤¤¡£ ºÇ¶á¤Î¥Þ¥·¥ó¤ÎÂçÉôʬ¤Ç¤ÏÇÜÀºÅټ¿ô¤Ï½½¿Ê¿ô¤Ç17·å¤¢¤ì¤Ð (¤Û¤È¤ó¤É¤Î¾ì¹ç¤Ï)½½Ê¬¤Ë¼ý¤á¤ë¤³¤È¤¬¤Ç¤­¤ë¡£(24)

CONVFMT ¤Ësprintf¤ÇÄ̾ï¤ÎÉâÆ°¾®¿ôÅÀ¿ô¤ò »ØÄꤷ¤Æ¤¤¤ë¤è¤¦¤Êʸ»úÎó¤Ç¤Ï¤Ê¤¤¤â¤Î¤ò¥»¥Ã¥È¤·¤¿¾ì¹ç¡¢ ¤ª¤«¤·¤Ê·ë²Ì¤È¤Ê¤ë¤À¤í¤¦¡£ Î㤨¤Ð½ñ¼°Ê¸»úÎó¤Î`%'¤ò˺¤ì¤¿¾ì¹ç¤Ë¤Ï¡¢Á´¤Æ¤Î¿ôÃÍ¤ÏÆ±¤¸Ê¸»úÎóÄê¿ô¤ËÊÑ´¹¤µ¤ì¤ë¡£ ÆÃÊ̤ʾì¹ç¤È¤·¤Æ¿ôÃͤ¬À°¿ô¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢ ÊÑ´¹¤·¤¿·ë²Ì¤Îʸ»úÎó¤Ï¾ï¤ËÀ°¿ô¤Î¤â¤Î¤È¤Ê¤ê¡¢ CONVFMT¤ÎÃͤ˺¸±¦¤µ¤ì¤Ê¤¤¡£ ¼¡¤Î¤è¤¦¤Ê¥×¥í¥°¥é¥à¤ÎÃÇÊÒ¤¬¤¢¤Ã¤¿¤È¤¹¤ë¤È¡¢

 
CONVFMT = "%2.2f"
a = 12
b = a ""
   

b¤Ï"12.00"¤Ç¤Ï¤Ê¤¯"12"¤È¤¤¤¦Ãͤò»ý¤Ä¡£ (d.c.)

POSIX ¤Îɸ½à°ÊÁ°¤Ë¤Ï¡¢awk¤Ï¿ôÃͤ«¤éʸ»úÎ󤨤ÎÊÑ´¹¤Î°Ù¤Ë OFMT¤ÎÃͤò»ÈÍѤ·¤Æ¤¤¤¿¡£ OFMT¤Ïprintʸ¤Ç¿ôÃͤò½ÐÎϤ¹¤ë¤È¤­¤Î½ñ¼°¤ò»ØÄꤹ¤ë¡£ CONVFMT¤Ï¡¢½ÐÎϤ¹¤ë¤È¤­¤ÈÊÑ´¹¤¹¤ë¤È¤­¤ò¶èÊ̤¹¤ë¤¿¤á¤ËƳÆþ¤µ¤ì¤¿¡£ CONVFMT ¤ÈOFMT¤ÎξÊý¤È¤â¡¢¥Ç¥Õ¥©¥ë¥È¤ÎÃͤÏ"%.6g" ¤Ç¤¢¤ë¡£ ¿¤¯¤Î¾ì¹ç¡¢¸Å¤¤awk¤Ï¤½¤Îµóư¤òÊѤ¨¤Ê¤¤¤À¤í¤¦¡£ ¤·¤«¤·¡¢¤³¤ÎÍͤÊOFMT¤Î»ÈÍѤϡ¢ ¥×¥í¥°¥é¥à¤ò¾¤Î¼ÂÁõ¤Ë¤è¤ë awk½èÍý·Ï¤Ë»ý¤Ã¤Æ¤¤¤¯¤è¤¦¤Ê¾ì¹ç¤Ë¤Ï¡¢ ¾ï¤Ë¤½¤Î¤³¤È¤ËÃí°Õ¤»¤Í¤Ð¤Ê¤é¤Ê¤¤¡£¤³¤¦¤¤¤Ã¤¿¾ì¹ç¡¢ ¥×¥í¥°¥é¥à¤òľ¤¹¤è¤ê¤âgawk¤½¤ì¼«ÂΤò°Ü¿¢¤¹¤ë¤³¤È¤ò´«¤á¤ë¡£ printʸ¤Ë´Ø¤¹¤ë¾Ü¤·¤¤ÀâÌÀ¤ÏSee section print ʸ¡£

ºÇ¸å¤Ë¡¢·«¤êÊÖ¤¹¤¬¿ôÃͤÈʸ»úÎó¤Î´Ö¤ÎÊÑ´¹¤Ë¤Ä¤¤¤Æ½Ò¤Ù¤Æ¤ª¤³¤¦¡£ Where You Are Makes A Difference¤Ë¤ª¤¤¤Æ¡¢Ãϰ褴¤È¤Î¥­¥ã¥é¥¯¥¿¡¼¥»¥Ã¥È¤È¸À¸ì(¥í¥«¡¼¥ë(locale))¤¬ gawk¤Î¥Þ¥Ã¥Á¤¹¤ë¥­¥ã¥é¥¯¥¿¤Ë±Æ¶Á¤¹¤ë¤³¤È¤Ë¸ÀµÚ¤·¤¿¡£ ÆÃ¤Ëawk¥×¥í¥°¥é¥à¤ËÂФ·¤Æ¤Ï¾®¿ôÅÀ¤òɽ¤¹¥­¥ã¥é¥¯¥¿¤Ë±Æ¶Á¤¹¤ë¡£ "C"¥í¥«¡¼¥ë¤È¤Û¤È¤ó¤É¤Î±Ñ¸ì·÷¤Î¥í¥«¡¼¥ë¤Ç¤Ï¾®¿ôÅÀ¤È¤·¤Æ¥Ô¥ê¥ª¥É(`.') ¤ò»È¤Ã¤Æ¤¤¤ë¡£¤·¤«¤·¡¢Â¿¤¯¤Î¥è¡¼¥í¥Ã¥Ñ¤Î¥í¥«¡¼¥ë¤äÈó±Ñ¸ì·÷¤Î¥í¥«¡¼¥ë¤Ç¤Ï ¾®¿ôÅÀ¤È¤·¤Æ¥«¥ó¥Þ(`,')¤ò»È¤Ã¤Æ¤¤¤ë¡£

POSIXɸ½à¤Ïawk¤Ïawk¥×¥í¥°¥é¥à¤Î¥½¡¼¥¹¥³¡¼¥É¤òÆÉ¤à¤È¤­¤ä ¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô(see section ¤½¤Î¾¤Î¥³¥Þ¥ó¥É¥é¥¤¥ó°ú¿ô)¤ÇÂåÆþ¤ò¹Ô¤¦¤È¤­¤Ë¤Ï ¾ï¤Ë¥Ô¥ê¥ª¥É¤ò¾®¿ôÅÀ¤È¤·¤Æ»ÈÍѤ¹¤ë¤È¤·¤Æ¤¤¤ë¡£ ¤·¤«¤·¡¢ÆþÎϥǡ¼¥¿¤ò²ò¼á¤¹¤ë¤È¤­¤äprint¡¢printf¤Ç½ÐÎϤ¹¤ë¤È¤­¡¢ ¿ôÃͤ«¤éʸ»úÎ󤨤ÎÊÑ´¹¤ÎºÝ¤Ë¤Ï¤½¤ÎÃϰè¤Ç¤Î¾®¿ôÅÀ¥­¥ã¥é¥¯¥¿¤¬»È¤ï¤ì¤ë¡£ gawk¤Ï¥Ð¡¼¥¸¥ç¥ó 3.1.3¤Ë¤ª¤¤¤Æ¤³¤Îɸ½à¤Ë¥Õ¥ë¤Ë½àµò¤·¤¿¡£ °Ê²¼¤ÎÎã¤ÏGNU/Linux¥·¥¹¥Æ¥à¤Ë¤ª¤±¤ëưºî¤Î°ã¤¤¤òɽ¤·¤¿¤â¤Î¤Ç¤¢¤ë¡£

 
$ gawk 'BEGIN { printf "%g\n", 3.1415927 }'
-| 3.14159
$  LC_ALL=en_DK gawk 'BEGIN { printf "%g\n", 3.1415927 }'
-| 3,14159
$ echo 4,321 | gawk '{ print $1 + 1 }'
-| 5
$ echo 4,321 | LC_ALL=en_DK gawk '{ print $1 + 1 }'
-| 5,321
   

`en_DK'¥í¥«¡¼¥ë¤Ï¥Ç¥ó¥Þ¡¼¥¯¤Ë¤ª¤±¤ë±Ñ¸ì¤Î¥í¥«¡¼¥ë¤Ç¤¢¤ê¡¢ ¾®¿ôÅÀ¤È¤·¤Æ¥«¥ó¥Þ¤ò»È¤Ã¤Æ¤¤¤ë¡£Ä̾ï¤Î"C"¥í¥«¡¼¥ë¤Ç¤Ï gawk¤Ï`4,321'¤ò`4'¤È¤·¤Æ°·¤¦¤¬¡¢ Danish¥í¥«¡¼¥ë¤Ç¤Ï¤½¤ì¤ÏÁ´¤Æ¿ôÃͤȤ·¤Æ°·¤ï¤ì`4.321'¤È¤Ê¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.5 ¿ô³ØÅª±é»»»Ò

awk¸À¸ì¤Ï¡¢¼°¤òɾ²Á¤¹¤ë¤È¤­¤Ë°ìÈÌŪ¤Ê»»½Ñ±é»»»Ò¤ò»ÈÍѤ¹¤ë¡£ ¤³¤ì¤é¤Î»»½Ñ±é»»»Ò¤ÏÄ̾ï¤ÎÍ¥Àè½ç°Ì¤Îµ¬Â§¤Ë¤·¤¿¤¬¤Ã¤Æ¤ª¤ê¡¢ ¤¢¤Ê¤¿¤Î´üÂÔÄ̤ê¤ËƯ¤¯¤À¤í¤¦¡£

¤³¤ì¤Ï¡¢³ØÀ¸¤Î̾Á°¤È¡¢³Æ³ØÀ¸¤Î»°¤Ä¤Î¥Æ¥¹¥È¤ÎÅÀ¿ô¤¬µ­Ï¿¤µ¤ì¤¿¥ê¥¹¥È¤«¤é¤Ê¤ë `grades'¤È¤¤¤¦¥Õ¥¡¥¤¥ë¤ÎÆâÍÆ¤Ç¤¢¤ë (¾®¤µ¤Ê¥¯¥é¥¹¤À)¡£

 
Pat   100 97 58
Sandy  84 72 93
Chris  72 92 89
   

¼¡¤Î¥×¥í¥°¥é¥à¤Ë`grades'¤òÆþÎÏ¥Õ¥¡¥¤¥ë¤È¤·¤ÆÍ¿¤¨¤ë¤ÈÊ¿¶ÑÅÀ¤ò½ÐÎϤ¹¤ë¡£

 
$ awk '{ sum = $2 + $3 + $4 ; avg = sum / 3
>        print $1, avg }' grades
-| Pat 85
-| Sandy 83
-| Chris 84.3333
   

°Ê²¼¤Î¥ê¥¹¥È¤Ïawk¤Î»»½Ñ±é»»»Ò°ìÍ÷¤Ç¤¢¤ë¡£ Í¥Àè½ç°Ì¤Î¹â¤¤½ç¤«¤éÄ㤤½ç¤Ë¤Ê¤é¤ó¤Ç¤¤¤ë¡£

- x

ȿž¡£

+ x

ñ¹à¤Î¥×¥é¥¹¡£¼°¤Ï¿ôÃͤËÊÑ´¹¤µ¤ì¤ë¡£

x ^ y
x ** y

¤Ù¤­¾è¡£x¤òy¾è¤¹¤ë¡£ `2 ^ 3'¤ÎÃͤÏ8¤Ë¤Ê¤ë¡£ `**'¤È¤¤¤¦¥­¥ã¥é¥¯¥¿¤ÎʤӤÏ`^'¤ÈÅù²Á¤Ç¤¢¤ë¡£

x * y

¾è»»¡£

x / y

³ä¤ê»»¡£awk¤Î¤¹¤Ù¤Æ¤Î¿ôÃͤÏÉâÆ°¾®¿ôÅÀ¿ô¤Ç¤¢¤ë¤Î¤Ç¡¢ `3 / 4' ¤Î·ë²Ì¤ÏÀ°¿ô¤Ë´Ý¤á¤é¤ì¤ë¤³¤È¤Ï¤Ê¤¯¡¢0.75¤È¤Ê¤ë (¤³¤ì¤ÏÆÃ¤ËC¤Î¥×¥í¥°¥é¥Þ¡¼¤Ë¤ª¤¤¤Æ¤è¤¯¤¢¤ë´Ö°ã¤¤¤Ç¡¢ awk¤Ë¤ª¤±¤ë¤¹¤Ù¤Æ¤Î¿ô¤ÏÉâÆ°¾®¿ôÅÀ¿ô¤Ç¤¢¤ë¤È¤¤¤¦ ¤³¤È¤ÈÀ°¿ô¤Ç¤¢¤ë¤è¤¦¤Ë¸«¤¨¤ëÄê¿ô¤Î³ä¤ê»»¤âÀ°¿ô¤Ç¤Ï¤Ê¤¯¼Â¿ô¤¬·ë²Ì¤È¤Ê¤ë ¤È¤¤¤¦¤³¤È¤ò˺¤ì¤Æ¤·¤Ã¤Æ¤¤¤ë¤Î¤Ç¤¢¤ë)¡£

x % y

¾ê;¡£¾Ü¤·¤¤¤³¤È¤Ï¤³¤Î¥ê¥¹¥È¤Î¸å¤Ç½Ò¤Ù¤ë¡£

x + y

²Ã»»¡£

x - y

¸º»»¡£

ñ¹à¤Î¥×¥é¥¹¤È¥Þ¥¤¥Ê¥¹¤ÏƱ¤¸Í¥Àè½ç°Ì¤ò»ý¤Á¡¢ ¾è»»±é»»»Ò¤Ï¤¹¤Ù¤ÆÆ±¤¸Í¥Àè½ç°Ì¤ò»ý¤Ä¡£ ¤Þ¤¿¡¢²Ã»»¤È¸º»»¤ÏƱ¤¸Í¥Àè½ç°Ì¤ò»ý¤Ä¡£

x % y¤Î¾ê;¤òµá¤á¤ë¤È¤­¡¢ ¤½¤Î¾¦¤ÏÀ°¿ô¤Ë¥¼¥íÊý¸þ¤Ø´Ý¤á¤é¤ì¡¢¤µ¤é¤Ëy¤¬³Ý¤±¤é¤ì¤ë¡£ ¤³¤Î·ë²Ì¤Ïx¤«¤é¸º»»¤µ¤ì¤ë¡£ ¤³¤ÎÁàºî¤Ï``trunc-mod''¤È¤·¤ÆÃΤé¤ì¤Æ¤¤¤ë¡£ °Ê²¼¤Î´Ø·¸¤¬¾ï¤ËÊݤ¿¤ì¤ë¡£

 
b * int(a / b) + (a % b) == a
   

°ì¤Ä¤Î˾¤Þ¤·¤¯¤Ê¤¤¤Ç¤¢¤í¤¦¤³¤Î¾ê;¤ÎÄêµÁ¤Î¸ú²Ì¤Ï¡¢ x¤¬Éé¤Ç¤¢¤ë¤È¤­¤Ëx % y¤¬Éé¤Ë¤Ê¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ:

 
-17 % 8 = -1
   

¾¤Î¼ÂÁõ¤Îawk¤Ç¤Ï¡¢¾ê;¤ÎÉ乿¤Ï¥Þ¥·¥ó°Í¸¤Ç¤¢¤ë¡£

Ãí°Õ: POSIXɸ½à¤Ç¤Ï¤Ù¤­¾è¤ËÂФ·¤Æ`^'¤·¤«ÄêµÁ¤·¤Æ¤¤¤Ê¤¤¡£ °Ü¿¢À­¤òºÇÂç¸Â¤ËÊݤĤˤϡ¢`**'¤ò»È¤ï¤Ê¤¤¤³¤È¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.6 ʸ»úÎóÏ¢ÀÜ

It seemed like a good idea at the time.
Brian Kernighan

ʸ»úÎó¤Î±é»»»Ò¤Ï¤¿¤À°ì¤Ä¡¢Ï¢ÀܤΤߤǤ¢¤ë¡£ ¤³¤ì¤Ï¤½¤ì¤òɽ¤ï¤¹ÆÃÄê¤Î±é»»»Ò¤ò»ý¤¿¤Ê¤¤¡£ ¤½¤ÎÂå¤ï¤ê¡¢¤¢¤ë¼°¤òÊ̤μ°¤Ë²¿¤Î±é»»»Ò¤â¶´¤Þ¤º¤ËϢ³¤·¤ÆÃÖ¤¤¤¿¤È¤­¤ËÏ¢Àܤ¬¹Ô¤ï¤ì¤ë¡£ Îã¤òµó¤²¤è¤¦¡£

 
$ awk '{ print "Field number one: " $1 }' BBS-list
-| Field number one: aardvark
-| Field number one: alpo-net
…
   

¤³¤³¤Ç¡¢¼¡¤Î¤è¤¦¤Ë`:'¤Î¤¢¤È¤Ë¥¹¥Ú¡¼¥¹¤¬¤Ê¤¤Ê¸»úÎó¤Ë¤·¤Æ¤âƱÍͤǤ¢¤ë¡£

 
$ awk '{ print "Field number one:" $1 }' BBS-list
-| Field number one:aardvark
-| Field number one:alpo-net
…
   

ʸ»úÎó¤ÎÏ¢Àܤ¬ÌÀ³Î¤Ê±é»»»Ò¤ò»ý¤Ã¤Æ¤¤¤Ê¤¤¤Î¤Ç¡¢ Ï¢Àܤò¹Ô¤Ê¤¦¥¢¥¤¥Æ¥à¤ò¥«¥Ã¥³¤Ç°Ï¤ó¤ÇÏ¢Àܤ¬³Î¼Â¤Ë¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤ò Êݾڤ¹¤ë¤³¤È¤¬¤·¤Ð¤·¤ÐɬÍפȤʤ롣 ¤¿¤È¤¨¤Ð¼¡¤Î¤è¤¦¤Ê¥³¡¼¥É¤Ç¤Ïfile ¤È name ¤òÏ¢Àܤ¹¤ë¤È¤¤¤¦¤³¤È¤¬ÌÀ³Î¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¡£

 
file = "file"
name = "name"
print "something meaningful" > file name
   

¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ë½ñ¤¯É¬Íפ¬¤¢¤ë¡£

 
print "something meaningful" > (file name)
   

Ï¢Àܤò»È¤¦¤È¤­¤Ë¤Ï¡¢¤¤¤Ä¤Ç¤â¥«¥Ã¥³¤ÇÏ¢ÀܤÎÁ´ÂΤò°Ï¤à¤³¤È¤ò´«¤á¤ë (¤È¤¯¤Ë`='¤Î±¦ÊդΥª¥Ú¥é¥ó¥É¤Ç¤¢¤Ã¤¿¤ê¤·¤¿¤È¤­¤Ë¤Ï)¡£ ʸ»úÎóÏ¢Àܤò»È¤Ã¤¿¼°¤Ë¤Ï½½Ê¬Ãí°Õ¤¹¤ë¤³¤È¡£ ¤È¤¯¤Ë¡¢Ï¢Àܤ˻Ȥï¤ì¤ë¼°¤Îɾ²Á¤Î½çÈÖ¤¬awk¸À¸ì¤Ë¤ª¤¤¤Æ ÌÀ³Î¤Ë¤Ê¤Ã¤Æ¤¤¤Ê¤¤¾ì¹ç¤Ë¤Ï¡£°Ê²¼¤ÎÎã¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£

 
BEGIN {
    a = "don't"
    print (a " " (a = "panic"))
}
   

¤³¤³¤Ç¡¢a¤ËÂФ¹¤ëÂåÆþ¤¬Ï¢Àܤˤè¤êÆÀ¤é¤ì¤ëÃͤμèÆÀ¤ÎÁ°¤Ë¹Ô¤ï¤ì¤ë¤Î¤« ¸å¤Ë¹Ô¤ï¤ì¤ë¤Î¤«ÄêµÁ¤µ¤ì¤Æ¤¤¤Ê¤¤¡£¤³¤Î·ë²Ì¤Ï `don't panic'¤«`panic panic'¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ë¡£ ¾¤Î±é»»»Ò¤Èº®¤¼¤Æ»È¤¦¤È¤­¡¢Ï¢ÀܤÎÍ¥Àè½ç°Ì¤Ï¤·¤Ð¤·¤Ðľ´¶¤ËÈ¿¤·¤¿¤â¤Î¤È¤Ê¤ë¡£ °Ê²¼¤ÎÎã¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£

 
$ awk 'BEGIN { print -12 " " -24 }'
-| -12-24
   

¤³¤ì¤Ï``ÌÀ¤é¤«¤Ë""¡¢-12¡¢¥¹¥Ú¡¼¥¹¡¢-24¤òÏ¢·ë¤·¤Æ¤¤¤ë¡£ ¤·¤«¤·¥¹¥Ú¡¼¥¹¤Ï¤É¤³¤Ë¹Ô¤Ã¤Æ¤·¤Þ¤Ã¤¿¤Î¤À¤í¤¦¤«? ¤½¤ÎÅú¤¨¤Ï±é»»»Ò¤ÎÍ¥Àè½ç°Ì¤ÎÁȤ߹ç¤ï¤»¤Èawk¤Î¼«Æ°ÊÑ´¹µ¬Â§¤Ë ±£¤µ¤ì¤Æ¤¤¤ë¡£Ë¾¤ß¤Î·ë²Ì¤òÆÀ¤ë¤¿¤á¤Ë¤Ï¡¢¥×¥í¥°¥é¥à¤ò°Ê²¼¤Î¤è¤¦¤Ë½ñ¤¯¡£

 
$ awk 'BEGIN { print -12 " " (-24) }'
-| -12 -24
   

¤³¤ì¤Ïawk¤Ë`-24'¤Î`-'¤òñ¹à¤Î¤â¤Î¤È¤·¤Æ°·¤¦¤è¤¦¤Ë ¶¯À©¤¹¤ë¡£¤½¤¦¤·¤Ê¤±¤ì¤Ð°Ê²¼¤Î¤è¤¦¤Ë²ò¼á¤µ¤ì¤ë¡£

 
    -12 (" " - 24)
⇒ -12 (0 - 24)
⇒ -12 (-24)
⇒ -12-24
   

Àè¤Ë½Ò¤Ù¤¿¤è¤¦¤Ë¡¢Ï¢Àܤò¹Ô¤¦¤È¤­¤Ë¤Ï¥«¥Ã¥³¤ò¤Ä¤±¤è¤¦¡£ ¤µ¤â¤Ê¤±¤ì¤Ð·ë²Ì¤ÏÊݾڤµ¤ì¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.7 ÂåÆþ¼°

ÂåÆþ(assignment)¤Ï¤¢¤ëÊÑ¿ô¤Ë¿·¤·¤¤Ãͤò¥»¥Ã¥È¤¹¤ë¼°¤Ç¤¢¤ë¡£ ¼¡¤ÎÎã¤Ç¤Ï¡¢z¤È¤¤¤¦ÊÑ¿ô¤Ë1¤òÂåÆþ¤·¤Æ¤¤¤ë¡£

 
z = 1
   

¤³¤Î¼°¤¬¼Â¹Ô¤µ¤ì¤¿¸å¤Ç¤ÏÊÑ¿ôz¤ÎÃͤÏ1¤Ë¤Ê¤ê¡¢ÂåÆþÁ°¤Îz¤ÎÃͤϼº¤ï¤ì¤ë¡£

ʸ»úÎó¤âƱ¤¸ÍͤËÂåÆþ¤ò¹Ô¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ Î㤨¤Ð¡¢¼¡¤ÎÎã¤Ç¤Ï message¤È¤¤¤¦ÊÑ¿ô¤Ë"this food is good" ¤È¤¤¤¦Ãͤ¬³ÊǼ¤µ¤ì¤ë¡£

 
thing = "food"
predicate = "good"
message = "this " thing " is " predicate
   

¤³¤ÎÎã¤Ï¤Þ¤¿¡¢Ê¸»úÎó¤ÎÏ¢ÀܤâÀâÌÀ¤·¤Æ¤¤¤ë¡£ `='¤ÏÂåÆþ±é»»»Ò(assignment operator)¤È¸Æ¤Ð¤ì¤ë¡¢ ±é»»»Ò¤ÎÃæ¤Ç¤â¤Ã¤È¤âñ½ã¤Ê¤â¤Î¤Ç¡¢±¦ÊÕ¤ÎÃͤò¤½¤Î¤Þ¤ÞÊѹ¹¤»¤º¤ËÂåÆþ¤¹¤ë¡£ ÂçÉôʬ¤Î±é»»»Ò(²Ã»»¡¢Ï¢ÀÜ¡¢¤Ê¤É)¤Ï¡¢Ãͤò·×»»¤¹¤ë°Ê³°¤Ë¤Ê¤ó¤ÎºîÍѤâ»ý¤¿¤Ê¤¤¡£ ¤â¤·¡¢(·×»»¤µ¤ì¤¿)¤½¤ÎÃͤò̵»ë¤¹¤ë¤Ê¤é¤Ð¡¢ ¤½¤ì¤Ï±é»»»Ò¤ò»È¤ï¤Ê¤«¤Ã¤¿¤Î¤ÈƱ¤¸·ë²Ì¤È¤Ê¤ë¤À¤í¤¦¡£ ¤·¤«¤·ÂåÆþ±é»»»Ò¤Ï°Û¤Ê¤Ã¤Æ¤¤¤Æ¡¢ ÃͤòÀ¸À®¤·¤½¤ÎÃͤò̵»ë¤·¤¿¤È¤·¤Æ¤âÂåÆþÁàºî¤ÏÊѹ¹¤µ¤ì¤¿Ãͤò¼«Ê¬¤Ë³ÊǼ¤¹¤ë¡£ ¤³¤ì¤ÏÉûºîÍÑ(side effect)¤È¸Æ¤Ð¤ì¤ë¡£

ÂåÆþ¤Îº¸ÊÕ¤ÏÊÑ¿ô(see section ÊÑ¿ô)¤òɬ¤º¤·¤âɬÍפȤ»¤º¡¢ ¤½¤ì¤Ï¥Õ¥£¡¼¥ë¥É (see section ¥Õ¥£¡¼¥ë¥É¤ÎÆâÍÆ¤òÊѹ¹¤¹¤ë) ¤ä ÇÛÎó¤ÎÍ×ÁÇ (see section awk ¤Ë¤ª¤±¤ëÇÛÎó)¤Ç¤¢¤Ã¤Æ¤â¤è¤¤¡£ ¤³¤ì¤é¤ÏÁí¾Î¤·¤Ælvalues (º¸ÊÕÃÍ)¤È¸Æ¤Ð¤ì¡¢ ÂåÆþ±é»»»Ò¤Îº¸ÊÕ¤ËÃÖ¤¯¤³¤È¤¬¤Ç¤­¤ë¡£ ±¦ÊդˤϤɤΤ褦¤Ê¼°¡¢ÆÃÄê¤ÎÃͤòÂåÆþ¤¹¤ë¼°¤ä¥Õ¥£¡¼¥ë¥É¡¢ÇÛÎóÍ×ÁǤǤâ (rvalues(±¦ÊÕÃÍ)¤È¸Æ¤Ð¤ì¤ë¤è¤¦¤ÊÃͤò)¡¢ÃÖ¤¯¤³¤È¤¬¤Ç¤­¤ë¡£

½ÅÍפʤ³¤È¤Ï¡¢ÊÑ¿ô¤Ï¾ï¤ËƱ¤¸·¿¤Ç¤¢¤ë¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¤È¤¤¤¦»ö¤Ç¤¢¤ë¡£ ÊÑ¿ô¤Î·¿¤Ïñ½ã¤Ë¡¢¤½¤Î»þÅÀ¤Ç³ÊǼ¤·¤Æ¤¤¤ëÃͤˤè¤Ã¤Æ·èÄꤵ¤ì¤ë¡£ ¼¡¤Ëµó¤²¤ë¥×¥í¥°¥é¥à¤ÎÃÇÊҤǤϡ¢ÊÑ¿ôfoo¤ÏºÇ½é¤Ï¿ô¤ÎÃͤò»ý¤Á¡¢ ¤½¤Î¸å¤Ïʸ»úÎóÃͤò»ý¤Ã¤Æ¤¤¤ë¡£

 
foo = 1
print foo
foo = "bar"
print foo
   

ÆóÈÖÌܤÎÂåÆþʸ¤Çfoo¤Ëʸ»úÎóÃͤòÍ¿¤¨¤¿¤È¤­¤Ë¡¢¤½¤ì°ÊÁ°¤Î¿ô¤ÎÃͤϼº¤ï¤ì¤ë

¿ô»ú¤Ç»Ï¤Þ¤Ã¤Æ¤¤¤Ê¤¤Ê¸»úÎó¤ÎÃͤϿôÃÍ(numeric value)¤È¤·¤Æ¤Ï¥¼¥í¤Ç¤¢¤ë¡£ ¼¡¤Î¥³¡¼¥É¤ò¼Â¹Ô¤¹¤ë¤È¡¢foo¤ÎÃͤÏ5¤È¤Ê¤ë¡£

 
foo = "a string"
foo = foo + 5
   

Ãí°Õ: ÊÑ¿ô¤ò¿ôÃͤȤ·¤Æ°·¤¤¡¢¤½¤Î¸å¤Çʸ»úÎó¤È¤·¤Æ°·¤¦¤³¤È¤Ïº®Íð¤ò¾·¤­¤ä¤¹¤¯¡¢ ¤è¤¯¤Ê¤¤¥×¥í¥°¥é¥ß¥ó¥°¥¹¥¿¥¤¥ë¤Ç¤¢¤ë¤³¤È¤ËÃí°Õ¤¹¤ë¤³¤È¡£ Àè¤ÎÎã¤Ï awk¤Îưºî¤¬¤É¤ó¤Ê¤â¤Î¤«¤òÀâÌÀ¤¹¤ë¤â¤Î¤Ç¤¢¤Ã¤Æ¡¢ ¤³¤Î¤è¤¦¤Ë¥×¥í¥°¥é¥à¤ò½ñ¤±¤ÐÎɤ¤¤È¤¤¤¦ÊýË¡¤Ç¤Ï¤Ê¤¤!)

ÂåÆþ¤Ï¤½¤ì¼«¿È¤ÎÃÍ¡ÊÂåÆþ¤µ¤ì¤¿Ã͡ˤò»ý¤Ä¼°¤Ç¤¢¤ë¡£ ½¾¤Ã¤Æ¡¢`z = 1'¤Ï1¤È¤¤¤¦Ãͤò»ý¤Ä¼°¤Ç¤¢¤ë¡£ ¤³¤Î·ë²Ì¡¢Â¿½ÅÂåÆþ¤òµ­½Ò¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£

 
x = y = z = 5
   

¤³¤ÎÎã¤Ç¤Ï»°¤Ä¤ÎÊÑ¿ô(x, y, z)Á´¤Æ¤Ë¡¢5¤ò³ÊǼ¤¹¤ë¡£ ¤Ê¤¼¤Ê¤é¡¢`z = 5'¤ÎÃͤÏ5¤Ç¤¢¤ê¡¢¤½¤ì¤¬y¤Ë³ÊǼ¤µ¤ì¡¢ ¤µ¤é¤Ë`y = z = 5'¤ÎÃÍ¡¢¤Ä¤Þ¤ê5¤¬x¤Ë³ÊǼ¤µ¤ì¤ë¡£

ÂåÆþ¤Ï¼°¤Î¤É¤³¤Ç¤Ç¤â»È¤¦¤³¤È¤¬¤Ç¤­¤ë¡£ Î㤨¤Ð`x != (y = 1)'¤È¤¤¤¦µ­½Ò¤ÏÀµ¤·¤¯¡¢¤³¤ì¤Ïy ¤Ë1¤ò¥»¥Ã¥È¤·¡¢ ¤½¤ì¤«¤éx¤¬1¤ÈÅù¤·¤¤¤«¤É¤¦¤«¤ò¥Æ¥¹¥È¤¹¤ë¡£ ¤·¤«¤·¡¢¤³¤Î¥¹¥¿¥¤¥ë¤Ï¥×¥í¥°¥é¥à¤òÆÉ¤ß¤Ë¤¯¤¯¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£ one-shot program¤ò½ü¤¤¤Æ¤Ï ¤³¤Î¤è¤¦¤Ê¥Í¥¹¥È¤·¤¿ÂåÆþ¤ò¼è¤ê½ü¤¯¤è¤¦¤Ë½ñ¤­¤Ê¤ª¤¹¤Ù¤­¤Ç¤¢¤ë¡£

`='¤ÏÊ̤Ȥ·¤Æ¡¢¤½¤Î¾¤ÎÂåÆþ±é»»»Ò¤ÏÊÑ¿ô¤Î¡ÊÂåÆþÁ°¤Î¡Ë¸Å¤¤Ãͤȱ黻¤ò¹Ô¤¦¡£ Î㤨¤Ð¡¢`+='¤È¤¤¤¦±é»»»Ò¤Ï±¦ÊÕÃͤòÊÑ¿ô¤Î¸Å¤¤ÃͤȲû»¤·¤Æ¿·¤·¤¤Ãͤò·×»»¤¹¤ë¡£ ½¾¤Ã¤Æ¡¢¼¡¤ÎÎã¤Ïfoo¤ÎÃͤË5²Ã¤¨¤ë¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ë¡£

 
foo += 5
   

¤³¤ì¤Ï¼¡¤Î¤è¤¦¤Ëµ­½Ò¤·¤¿¤â¤Î¤ÈƱ¤¸¤Ç¤¢¤ë¡£

 
foo = foo + 5
   

`+='¤È¤¤¤¦±é»»»Ò¤ò»È¤Ã¤¿¤³¤È¤Ë¤è¤ê¥×¥í¥°¥é¥à¤Î°ÕÌ£¤¬ÌÀ³Î¤Ë¤Ê¤ë¡£

`+='(¤Þ¤¿¤ÏǤ°Õ¤ÎÂåÆþ±é»»»Ò)¤ò»È¤Ã¤¿¤È¤­¤È¡¢ ±é»»»Ò¤Îº¸Â¦¤Î¥ª¥Ú¥é¥ó¥É¤ò±é»»»Ò¤Î±¦Â¦¤Ç·«¤êÊÖ¤·»È¤Ã¤¿¤È¤­¤È¤Ç °Û¤Ê¤ë¾ì¹ç¤¬¤¢¤ë¡£Îã¤òµó¤²¤è¤¦¡£

 
# Pat Rankin ¤Ë´¶¼Õ
BEGIN  {
    foo[rand()] += 5
    for (x in foo)
       print x, foo[x]

    bar[rand()] = bar[rand()] + 5
    for (x in bar)
       print x, bar[x]
}
   

rand¤Ï¸Æ¤Ð¤ì¤ë¤¿¤Ó¤Ë°Û¤Ê¤ëÃͤòÊÖ¤¹¤Î¤Ç¡¢ bar¤Îꤍ»ú¤Ï°Û¤Ê¤ë¤³¤È¤¬Êݾڤµ¤ì¤ë (ÇÛÎó¤Èrand´Ø¿ô¤Ï¤Þ¤ÀÀâÌÀ¤·¤Æ¤¤¤Ê¤¤¡£¾Ü¤·¤¯¤Ï See section awk ¤Ë¤ª¤±¤ëÇÛÎó¤È¿ôÃÍ´Ø¿ô¤ò»²¾È)¡£ ¤³¤ÎÎã¤ÏÂåÆþ±é»»»Ò¤Ë´Ø¤¹¤ë½ÅÂç¤Ê»ö¼Â¤òÇ¡¼Â¤Ë¤·¤Æ¤¤¤ë¡£ ¤½¤ì¤ÏÂåÆþ±é»»»Ò¤Îº¸ÊÕ¤¬¤¿¤À°ìÅÙ¤·¤«É¾²Á¤µ¤ì¤Ê¤¤¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ º¸Êդȱ¦ÊդΤɤÁ¤é¤Î¼°¤¬Àè¤Ëɾ²Á¤µ¤ì¤ë¤Î¤«¤Ï½èÍý·Ï¤Ë¤è¤ë¡£ °Ê²¼¤ÎÎã¤ò¹Í¤¨¤Æ¤ß¤è¤¦¡£

 
i = 1
a[i += 2] = i + 1
   

¤³¤ÎÎã¤Îa[3]¤ÎÃͤÏ2¤Ë¤â4¤Ë¤â¤Ê¤ê¤¦¤ë¡£

table-assign-ops¤Ï»»½ÑÂåÆþ±é»»»Ò¤Î¥ê¥¹¥È¤Ç¤¢¤ë¡£ ¤½¤ì¤¾¤ì¡¢±¦Â¦¤Î¥ª¥Ú¥é¥ó¥É¤Ë¸½¤ì¤¿¼°¤Ï¿ôÃͤËÊÑ´¹¤µ¤ì¤ë¡£

Operator

Effect

lvalue += increment

increment ¤ò lvalue ¤Ë­¤¹¡£

lvalue -= decrement

decrement ¤ò lvalue ¤«¤é°ú¤¯¡£

lvalue *= coefficient

lvalue ¤Ë coefficient ¤ò³Ý¤±¤ë¡£

lvalue /= divisor

lvalue ¤ò divisor ¤Ç³ä¤ë¡£

lvalue %= modulus

lvalue ¤Ë modulus ¤Ç¤Î¾ê;¤ò¥»¥Ã¥È¤¹¤ë¡£

lvalue ^= power

lvalue **= power

lvalue ¤ò power ¾è¤¹¤ë¡£

Table 5.1: »»½ÑÂåÆþ±é»»»Ò

Ãí°Õ: POSIX¤Ç¤Ï`^='±é»»»Ò¤À¤±¤¬ÄêµÁ¤µ¤ì¤Æ¤¤¤ë¡£ °Ü¿¢À­¤òºÇÂç¸Â¤ËÊݤĤ¿¤á¤Ë¡¢`**=*'±é»»»Ò¤Ï»È¤ï¤Ê¤¤¤è¤¦¤Ë¤¹¤ë¤³¤È¡£

Advanced Notes: `/=' ¤ÈÀµµ¬É½¸½¤È¤Î´Ö¤Î¹½Ê¸Åª¤ÊÛ£ËæÀ­

`/='ÂåÆþ±é»»»Ò¤ÈºÇ½é¤Î¥­¥ã¥é¥¯¥¿¤¬`='¤Ç¤¢¤ë Àµµ¬É½¸½Äê¿ô¤È¤Î´Ö¤Ë¤Ï¹½Ê¸Åª¤ÊÛ£Ëæ¤µ¤¬¤¢¤ë¡£ (d.c.) ¤³¤ì¤Ï¾¦ÍѤÎawk¤ÇºÇ¤âÌÀ³Î¤Ë¸½¤ì¤Æ¤¤¤ë¡£ ¤¿¤È¤¨¤Ð

 
$ awk /==/ /dev/null
error--> awk: syntax error at source line 1
error-->  context is
error-->         >>> /= <<<
error--> awk: bailing out at source line 1
   

²óÈòºö¤Ï°Ê²¼¤Î¤È¤ª¤ê:

 
awk '/[=]=/' /dev/null
   

gawk¤Ï¤³¤ÎÌäÂê¤ä ¾¤Î¼«Í³¤ËÆþ¼ê¤¹¤ë¤³¤È¤Î¤Ç¤­¤ë awk ½èÍý·Ï¤Ë¤¢¤ë¾¤Î¼«Í³¤ËÆþ¼ê¤¹¤ë¤³¤È¤Î¤Ç¤­¤ë½èÍý·Ï¤Ë ¤¢¤ë¤è¤¦¤ÊÌäÂê¤òÊú¤¨¤Æ¤¤¤Ê¤¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.8 ¥¤¥ó¥¯¥ê¥á¥ó¥È/¥Ç¥¯¥ê¥á¥ó¥È±é»»»Ò

¥¤¥ó¥¯¥ê¥á¥ó¥È±é»»»Ò(increment operators)¤ä ¥Ç¥¯¥ê¥á¥ó¥È±é»»»Ò(decrement operators) ¤ÏÊÑ¿ô¤ÎÃͤò1Áý¤ä¤¹¤«¡¢1¸º¤é¤¹¤«¤¹¤ë¡£ ¤³¤Î±é»»»Ò¤ÏÂåÆþ¤ÈƱ»þ¤Ë»È¤¦¤³¤È¤¬¤Ç¤­¡¢ ¥¤¥ó¥¯¥ê¥á¥ó¥È±é»»»Ò¤Ï¤½¤¦¤¤¤Ã¤¿¾ì¹ç¤Ëawk¸À¸ì¤ËÂФ·¤Æ ²¿¤Î±Æ¶Á¤âµÚ¤Ü¤µ¤Ê¤¤¤¬¡¢Èó¾ï¤Ë¤è¤¯¹Ô¤Ê¤ï¤ì¤ë¤³¤È¤ò¾Êά¤·¤Æµ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£

1¤ò²Ã¤¨¤ë±é»»»Ò¤Ï`++'¤Èµ­½Ò¤¹¤ë¡£¤³¤Î±é»»»Ò¤ÏÊÑ¿ô¤Î¥¤¥ó¥¯¥ê¥á¥ó¥È¤ò¡¢ ¤½¤ÎÃͤòÆÀ¤ëÁ°¡¢ÆÀ¤¿¸å¤Î¤É¤Á¤é¤Ç¤â¹Ô¤¨¤ë¡£ ÊÑ¿ôv¤ËÂФ·¤ÆÀè¤Ë¥¤¥ó¥¯¥ê¥á¥ó¥È¤ò¹Ô¤¦¤Ë¤Ï`++v'¤Èµ­½Ò¤¹¤ë¡£ ¤³¤ì¤Ïv¤ÎÃͤË1¤ò²Ã¤¨¤Æ¡¢¿·¤·¤¤Ãͤ¬¤³¤Î¼°¤ÎÃͤȤʤ롣 `v += 1'¤È¤¤¤¦ÂåÆþ¼°¤Ï¤³¤ì¤ÈÁ´¤¯Æ±¤¸¤Ç¤¢¤ë¡£ ÊÑ¿ô¤Î¸å¤Ë`++'¤òµ­½Ò¤·¤¿¤â¤Î¤Ï¥Ý¥¹¥È¥¤¥ó¥¯¥ê¥á¥ó¥È¤È¸Æ¤Ð¤ì¤ë¡£ ¤³¤ì¤ÏÊÑ¿ô¤ÎÃͤò¥¤¥ó¥¯¥ê¥á¥ó¥È¤¹¤ë¤¬¡¢Àè¤Û¤É¤È°ã¤Ã¤Æ¡¢ ¥¤¥ó¥¯¥ê¥á¥ó¥È¼°¼«ÂΤÎÃͤÏÊÑ¿ô¤Î¸Å¤¤ÃͤǤ¢¤ë¡£ ½¾¤Ã¤Æ¡¢foo¤ÎÃͤ¬4¤Î¤È¤­¡¢`foo++'¤È¤¤¤¦¼°¤ÎÃͤÏ4 ¤Ç¤¢¤ë¤¬ foo ¤ÎÃͤÏ5¤ËÊѹ¹¤µ¤ì¤Æ¤¤¤ë¡£ ¸À¤¤´¹¤¨¤ë¤È¡¢¤³¤Î±é»»»Ò¤ÏÊÑ¿ô¤Î¸Å¤¤ÃͤòÊÖ¤¹¤¬ÉûºîÍѤȤ·¤Æ¥¤¥ó¥¯¥ê¥á¥ó¥È¤ò ¹Ô¤¦¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£

¥Ý¥¹¥È¥¤¥ó¥¯¥ê¥á¥ó¥È¤Î`foo++'¤Ï`(foo+= 1) - 1' ¤È¤¤¤¦µ­½Ò¤È¤Û¤ÜƱ¤¸¤Ç¤¢¤ë¤¬¡¢´°Á´¤ËƱ¤¸¤È¤¤¤¦¤ï¤±¤Ç¤Ï¤Ê¤¤¡£ ¤½¤ì¤Ï¡¢awk¤Ç¤Î¿ôÃͤÏÁ´¤ÆÉâÆ°¾®¿ôÅÀ¿ô¤À¤«¤é¤Ç¤¢¤ë¡£ ÉâÆ°¾®¿ôÅÀ¿ô¤Ç¤Ï¡¢ `foo + 1 - 1'¤Ï foo¤ÈƱ°ì¤Ç¤Ï¤Ê¤¤¡£ ¤·¤«¤·¡¢¤«¤Ê¤ê¾®¤µ¤Ê¿ô(10¤Î12¾è¡¢¤Ä¤Þ¤ê°ìÃṳ̂Ëþ) ¤·¤«°·¤ï¤Ê¤¤¸Â¤ê¤Ï¤³¤¦¤¤¤Ã¤¿°ã¤¤¤Ï¤´¤¯¶Ï¤«¤Ç¤¢¤ë¡£

¥Õ¥£¡¼¥ë¥É¡¢µÚ¤ÓÇÛÎóÍ×ÁǤÏÊÑ¿ô¤ÈƱ¤¸Íͤ˥¤¥ó¥¯¥ê¥á¥ó¥È¤¬¹Ô¤ï¤ì¤ë (¥Õ¥£¡¼¥ë¥É¤Î»²¾È¤È¡¢ÊÑ¿ô¤Î¥¤¥ó¥¯¥ê¥á¥ó¥È¤òƱ»þ¤Ë¹Ô¤¤¤¿¤¤¤È¤­¤Ë¤Ï `$(i++)'¤ò»È¤¦¡£¤³¤Î¥«¥Ã¥³¤Ï¥Õ¥£¡¼¥ë¥É»²¾È±é»»»Ò`$' ¤ÎÍ¥Àè½ç°Ì¤Î¤¿¤á¤Ëɬ¤ºÉÕ¤±¤Ê¤±¤ì¤Ð¤Ê¤é¤Ê¤¤)¡£

¥Ç¥¯¥ê¥á¥ó¥È±é»»»Ò`--'¤Ï`++'¤ÈƱ¤¸ÍÍ¤ËÆ°ºî¤¹¤ë¤¬¡¢ ²Ã»»¤Ç¤Ï¤Ê¤¯¡¢1 ¤ò¸º»»¤¹¤ë¡£`++'¤ÈƱ¤¸¤¯¡¢ lvalue¤ÎÁ°¤ËÃÖ¤¤¤Æ¥×¥ê¥Ç¥¯¥ê¥á¥ó¥È¤Ç»ÈÍѤ·¤¿¤ê¡¢ lvalue¤Î¸å¤í¤ËÃÖ¤¤¤Æ¥Ý¥¹¥È¥Ç¥¯¥ê¥á¥ó¥È¤Ç»ÈÍѤ¹¤ë¤³¤È¤¬¤Ç¤­¤ë

++lvalue

¤³¤Î¼°¤Ïlvalue¤ò¥¤¥ó¥¯¥ê¥á¥ó¥È¤·¡¢¥¤¥ó¥¯¥ê¥á¥ó¥È¸å¤ÎÃͤò¤³¤Î¼°¤ÎÃͤȤ¹¤ë

lvalue++

¤³¤Î¼°¤âlvalue¤ÎÆâÍÆ¤ò¥¤¥ó¥¯¥ê¥á¥ó¥È¤¹¤ë¤¬¡¢ ¼°¤ÎÃͤϥ¤¥ó¥¯¥ê¥á¥ó¥È¤¹¤ëÁ°¤Î¸Å¤¤lvalue¤ÎÃͤȤʤ롣

--lvalue

`++lvalue'¤È»÷¤Æ¤¤¤ë¤¬¡¢²Ã»»¤Ç¤Ï¤Ê¤¯¸º»»¤ò¹Ô¤¦¡£ lvalue¤ò¸º¤¸¡¢¤½¤Î·ë²Ì¤¬¼°¤ÎÃͤȤʤ롣

lvalue--

`lvalue++'¤È»÷¤Æ¤¤¤ë¤¬²Ã»»¤Ç¤Ï¤Ê¤¯¸º»»¤ò¹Ô¤¦¡£ lvalue¤ò¸º¤¸¡¢¼°¤ÎÃͤϥǥ¯¥ê¥á¥ó¥È¤¹¤ëÁ°¤Î¸Å¤¤ÃͤȤʤ롣

Advanced Notes: Operator Evaluation Order

Advanced Notes: ±é»»»Ò¤Îɾ²Á½ç½ø

Doctor, doctor! It hurts when I do this!
So don't do that!

Groucho Marx

°Ê²¼¤Î¤è¤¦¤Ë¤·¤¿¤È¤­²¿¤¬µ¯¤³¤ë¤À¤í¤¦¤«?

 
b = 6
print b += b++
   

¤¢¤ë¤¤¤Ï¼¡¤Î¤â¤Î¤Ç¤Ï?

 
b = 6
b += ++b + b++
print b
   

¸À¤¤´¹¤¨¤ì¤Ð¡¢¸åÃֱ黻»Ò(`b++')¤Ë¤è¤ëÉûºîÍѤ¬¸ú²Ì¤ò¤â¤Ä¤Î¤Ï¤¤¤Ä¤«? ÉûºîÍѤ¬µ¯¤­¤ë¤Î¤Ï¼ÂÁõÄêµÁ¤Ç¤¢¤ë¡£ ¸À¤¤´¹¤¨¤ì¤Ð¡¢¤½¤ì¤Ïawk¤ÎÆÃÄê¤Î¥Ð¡¼¥¸¥ç¥ó¤Ë°Í¸¤¹¤ë¤â¤Î¤Ç¤¢¤ë¡£ ºÇ½é¤ÎÎã¤Î·ë²Ì¤Ï12¤«13¤Ç¤¢¤ê¡¢ÆóÈÖÌܤÎÎã¤Î·ë²Ì¤Ï22¤«23¤Ë¤Ê¤ë¤À¤í¤¦¡£

¤Þ¤È¤á¤ë¤È¡¢¤³¤¦¤¤¤¦¤³¤È¤ò¤¹¤ë¤Î¤Ï´«¤á¤é¤ì¤Ê¤¤¤· °Ü¿¢À­¤Î¤¿¤á¤Ë¤Ï¤½¤Îưºî¤ËÍê¤ë¤Ù¤­¤Ç¤Ï¤Ê¤¤¡£ ¤¢¤Ê¤¿¤Î¥×¥í¥°¥é¥à¤«¤é¤Ï¤³¤¦¤¤¤Ã¤¿¤³¤È¤Ï¼è¤ê½ü¤¤¤¿Êý¤¬Îɤ¤¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.9 awk ¤Ë¤ª¤±¤ë¿¿¤Èµ¶

¿¤¯¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç¤Ï¡¢``¿¿''¡¢``µ¶''¤òɽ¤ï¤¹¤è¤¦¤ÊÆÃÊ̤ʤâ¤Î¤¬¤¢¤ë¡£ ¤½¤¦¤¤¤Ã¤¿¤â¤Î¤ò»ý¤Ã¤¿¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤Ç¤Ï¡¢ true¤È¤«false ¤¢¤ë¤¤¤Ï¤³¤ì¤é¤ÎÂçʸ»ú¤Î¤â¤Î¤ò°ìÈ̤˻ȤäƤ¤¤ë¡¢ ¤·¤«¤·awk¤Ï°ã¤Ã¤Æ¤¤¤ë¡£ awk¤Ç¤Ï¡¢Èó¾ï¤Ëñ½ã¤Ê¡¢¿¿µ¶¤Ë´Ø¤¹¤ë¥³¥ó¥»¥×¥È¤òC¤«¤é¼õ¤±·Ñ¤¤¤Ç¤ª¤ê¡¢ 0¤Ç¤Ï¤Ê¤¤¿ôÃÍ¡¢¤¢¤ë¤¤¤Ï¶õ¤Ç¤Ï¤Ê¤¤Ê¸»úÎó¤Ï¿¿¤È¤Ê¤ë¡£ ¤½¤¦¤Ç¤Ï¤Ê¤¤ÃÍ(¥¼¥í¤«¶õʸ»úÎó¡¢"")¤Ïµ¶¤È¤Ê¤ë¡£ ¼¡¤Î¥µ¥ó¥×¥ë¥×¥í¥°¥é¥à¤Ï¡¢`A strange truth value'¤ò»°²ó½ÐÎϤ¹¤ë¡£

 
BEGIN {
   if (3.1415927)
       print "A strange truth value"
   if ("Four Score And Seven Years Ago")
       print "A strange truth value"
   if (j = 57)
       print "A strange truth value"
}
   

¤Ó¤Ã¤¯¤ê¤¹¤ë¤è¤¦¤Ê``non-zero or non-null'' ¤Î·ë²Ì¤¬À¸¤¸¤ë¤³¤È¤¬¤¢¤ë¡£ "0"¤È¤¤¤¦Ê¸»úÎóÄê¿ô¤Ï¡¢¿¿¤Ç¤¢¤ë¡£ ¤Ê¤¼¤Ê¤é¡¢¤³¤ì¤Ï¶õʸ»úÎó¤Ç¤Ï¤Ê¤¤¤«¤é¤Ç¤¢¤ë¡£ (d.c.)


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.10 ÊÑ¿ô¤Î·¿ÉÕ¤±¤ÈÈæ³Ó¼°

The Guide is definitive. Reality is frequently inaccurate.
The Hitchhiker's Guide to the Galaxy

¾¤Î¥×¥í¥°¥é¥ß¥ó¥°¸À¸ì¤È¤Ï°Û¤Ê¤ê¡¢awk¤ÎÊÑ¿ô¤Ï¸ÇÄꤷ¤¿·¿¤ò»ý¤Ã¤Æ¤ª¤é¤º¡¢ ¤Ê¤Ë¤«¤éÂåÆþ¤µ¤ì¤¿¤«¤Ë¤è¤Ã¤Æ¿ôÃͤˤâʸ»úÎó¤Ë¤â¤Ê¤ë

1992ǯ¤ÎPOSIXɸ½à¤Ç¤Ï¡¢¿ôÃÍʸ»úÎó(numeric string)¤Î³µÇ°¤¬Æ³Æþ¤µ¤ì¤¿¡£ ¤³¤ì¤Ï" +2"¤Î¤è¤¦¤Ê¡¢¿ôÃͤΤ褦¤Ë¸«¤¨¤ëʸ»úÎó¤Ç¤¢¤ë¡£ ¤³¤Î³µÇ°¤ÏÊÑ¿ô¤Î·¿¤ò·èÄꤹ¤ë¤Î¤Ë»È¤ï¤ì¤ë¡£ ÊÑ¿ô¤Î·¿¤ÏÆó¤Ä¤ÎÊÑ¿ô¤ò¤É¤Î¤è¤¦¤ËÈæ³Ó¤¹¤ë¤Î¤«¤ò·èÄꤹ¤ë¤Î¤Ë±Æ¶Á¤¹¤ë¤Î¤Ç¡¢ Èó¾ï¤Ë½ÅÍפǤ¢¤ë¡£ gawk¤Ç¤Ï¡¢ÊÑ¿ô¤Î·¿¤Ï°Ê²¼¤Î¥ë¡¼¥ë¤Ë½¾¤¦¡£

¤³¤ÎºÇ¸å¤Î¥ë¡¼¥ë¤ÏÆÃ¤Ë½ÅÍפǤ¢¤ë¡£¼¡¤Î¥×¥í¥°¥é¥à¤Ç¤Ï¡¢ a¤Ïʸ»úÎó±é»»¤Î¸å¤Ç¤â¿ôÃÍ¥¿¥¤¥×¤ò»ý¤Ä¡£

 
BEGIN {
         a = 12.345
         b = a " is a cute number"
         print b
}
   

Æó¤Ä¤Î¥ª¥Ú¥é¥ó¥É¤òÈæ³Ó¤¹¤ë¤È¤­¤Ï¡¢¥ª¥Ú¥é¥ó¥É¤Î°À­¤Ë¤è¤Ã¤ÆÊ¸»úÎó±é»»»Ò¤« ¿ôÃͱ黻»Ò¤Î¤¤¤º¤ì¤«¤¬°Ê²¼¤Î°ìÍ÷¤Ë½¾¤Ã¤Æ·èÄꤵ¤ì¡¢»ÈÍѤµ¤ì¤ë¡£

 
        +----------------------------------------------
        |       STRING          NUMERIC         STRNUM
--------+----------------------------------------------
        |
STRING  |       ʸ»úÎó          ʸ»úÎó          ʸ»úÎó
        |
NUMERIC |       ʸ»úÎó          ¿ôÃÍ            ¿ôÃÍ
        |
STRNUM  |       ʸ»úÎó          ¿ôÃÍ            ¿ôÃÍ
--------+----------------------------------------------
   

´ðËÜŪ¤Ê¹Í¤¨Êý¤Ï¡¢¥æ¡¼¥¶¡¼¤ÎÆþÎϤ¬¿ôÃͤΤ褦¤Ë¸«¤¨¡¢ ¥æ¡¼¥¶¡¼¤¬ÆþÎϤÀ¤±¹Ô¤Ã¤¿¤È¤­¤Î¤ß¿ôÃͤǤ¢¤ê¡¢ ¤½¤Î¥Ç¡¼¥¿¤¬¥­¥ã¥é¥¯¥¿¤«¤é¹½À®¤µ¤ì¤Æ¤¤¤¿ ¾ì¹ç¤Ë¤Ï¤½¤ì¤Ïʸ»úÎó¤Ç¤¢¤ë¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢¤¿¤È¤¨¤Ð" +3.14"¤È¤¤¤¦Ê¸»úÎóÄê¿ô¤Ï ¿ôÃͤΤ褦¤Ë¸«¤¨¤ë¤¬Ê¸»úÎó¤Ç¤¢¤ê¡¢Èæ³Ó¤Î¤¿¤á¤Ë¿ôÃͤȤ·¤Æ °·¤ï¤ì¤ë¤³¤È¤Ï¤Ê¤¤¡£

¤Þ¤È¤á¤ë¤È¡¢°ì¤Ä¤Î¥ª¥Ú¥é¥ó¥É¤¬Ê¸»úÎóÄê¿ô¤Î¤è¤¦¤Ê``½ã¿è¤Ê''ʸ»úÎó¤Ç¤¢¤ë¤È¤­¡¢ ʸ»úÎóÈæ³Ó¤¬¹Ô¤ï¤ì¤ë¡£¤½¤¦¤Ç¤Ê¤±¤ì¤Ð¿ôÃÍÈæ³Ó¤¬¹Ô¤ï¤ì¤ë¡£ (25)

Èæ³Ó¼°(comparison expression)¤Ïʸ»úÎ󤢤뤤¤Ï¿ôÃͤΡ¢ Åù¤·¤¤¤«¤Ê¤É¤ÎÈæ³Ó¤ò¹Ô¤¦¡£ ¤³¤Î¼°¤ÏC¤Î¥¹¡¼¥Ñ¡¼¥»¥Ã¥È¤Ë¤Ê¤Ã¤Æ¤¤¤ë´Ø·¸±é»»»Ò (relational operators) ¤ò»ÈÍѤ¹¤ë¡£table-relational-ops¤ÇÀâÌÀ¤¹¤ë¡£

Expression

Result

x < y

x ¤¬ y ¤è¤ê¾®¤µ¤¤¤È¤­¤Ë¿¿¡£

x <= y

x ¤¬ y °Ê²¼¤Î¤È¤­¤Ë¿¿¡£

x > y

x ¤¬ y ¤è¤êÂ礭¤¤¤È¤­¤Ë¿¿¡£

x >= y

x ¤¬ y°Ê¾å¤Î¤È¤­¤Ë¿¿¡£

x == y

x ¤¬ y¤ÈÅù¤·¤¤¤È¤­¤Ë¿¿¡£

x != y

x ¤¬ y¤ÈÅù¤·¤¯¤Ê¤¤¤È¤­¤Ë¿¿¡£

x ~ y

ʸ»úÎóx ¤¬Àµµ¬É½¸½ y¤È¥Þ¥Ã¥Á¤¹¤ë¤È¤­¤Ë¿¿¡£

x !~ y

ʸ»úÎóx ¤¬Àµµ¬É½¸½ y¤È¥Þ¥Ã¥Á¤·¤Ê¤¤¤È¤­¤Ë¿¿¡£

subscript in array

ÇÛÎóarray ¤¬ subscript¤Çꤍ»úÉÕ¤±¤µ¤ì¤ëÍ×ÁǤò»ý¤Ã¤Æ¤¤¤ë¤È¤­¤Ë¿¿¡£

Table 5.2: ´Ø·¸±é»»»Ò

Èæ³Ó¼°¤Ï¡¢¿¿¤Î¤È¤­¤½¤ÎÃͤȤ·¤Æ 1 ¤ò»ý¤Á¡¢µ¶¤Î¤È¤­ 0 ¤ò»ý¤Ä¡£ Èæ³Ó¼°¤Î¥ª¥Ú¥é¥ó¥É¤¬°Û¤Ê¤ë·¿¤Ç¤¢¤Ã¤¿¾ì¹ç¡¢¿ôÃÍ¥ª¥Ú¥é¥ó¥É¤Ï CONVFMT¤ÎÃͤò»È¤Ã¤ÆÊ¸»úÎó¤ËÊÑ´¹¤µ¤ì¤ë (see section ʸ»úÎó¤È¿ôÃͤÎÊÑ´¹)¡£

ʸ»úÎó¤ÎÈæ³Ó¤Ïʸ»úÎó¤ÎÀèÆ¬¤«¤é¥­¥ã¥é¥¯¥¿¤´¤È¤ÎÈæ³Ó¤Ç¹Ô¤Ê¤ï¤ì¤ë¡£ ¤·¤¿¤¬¤Ã¤Æ¡¢ "10" ¤Ï "9"¤è¤ê¤â¾®¤µ¤¤¡¢¤È¤¤¤¦¤³¤È¤Ë¤Ê¤ë¡£ Æó¤Ä¤Îʸ»úÎó¤¬Â¾Êý¤ÎÁ°¤ÎÉôʬ¤ËÅù¤·¤¤¤è¤¦¤Ê¾ì¹ç¡¢ ¤Ä¤Þ¤ê "abc" ¤È "abcd"¤ÎÈæ³Ó¤Ç¤Ï¡¢ û¤¤Êý¤Îʸ»úÎó "abc" ¤¬¤è¤ê¾®¤µ¤¤¡¢¤Èǧ¼±¤µ¤ì¤ë¡£

¼¡¤ÎÎã¤Ï¡¢Èó¾ï¤Ë¤¢¤ê¤¬¤Á¤Ê¡¢`=='±é»»»Ò¤Î`='¤ò°ì¤Ä˺¤ì¤Æ¤·¤Þ¤¦¤È¤¤¤¦¤â¤Î¤Ç¤¢¤ë¡£ ¤³¤ì¤ÏÀµ¤·¤¤awk¥×¥í¥°¥é¥à¤Ç¤¢¤ë¤¬¡¢´üÂÔ¤·¤¿Æ°ºî¤Ï¤·¤Ê¤¤¤À¤í¤¦¡£

 
if (a = b)   # ¤ª¤ª¤Ã¤È! a == b ¤Ç¤¢¤ë¤Ù¤­
   …
else
   …
   

b¤¬0¤«¡¢¶õʸ»úÎó¤Ç¤Ê¤¤¸Â¤ê¡¢i f¤Î¾ò·ï¼°¤Ï¾ï¤Ë¿¿¤Ë¤Ê¤ë¡£±é»»»Ò¤¬¤³¤Î¤è¤¦¤Ë»÷¤Æ¤¤¤ë¤¿¤á¤Ë¡¢ ¤³¤Î¼ï¤Î¥¨¥é¡¼¤Ï¥½¡¼¥¹¥³¡¼¥É¤òį¤á¤¿¤È¤­¤Ë¸«¤Ä¤±¤ë¤³¤È¤ÏÈó¾ï¤ËÆñ¤·¤¤¡£

°Ê²¼¤Ëgawk¤¬¤É¤Î¤è¤¦¤ËÈæ³Ó¤ò¹Ô¤Ê¤¤¡¢ ¤É¤Î¤è¤¦¤Ê·ë²Ì¤È¤Ê¤ë¤Î¤«¤ÎÎã¤òµó¤²¤ë¡£

1.5 <= 2.0

¿ôÃÍÈæ³Ó (¿¿)

"abc" >= "xyz"

ʸ»úÎóÈæ³Ó (µ¶)

1.5 != " +2"

ʸ»úÎóÈæ³Ó (¿¿)

"1e2" < "3"

ʸ»úÎóÈæ³Ó (¿¿)

a = 2; b = "2"
a == b

ʸ»úÎóÈæ³Ó (¿¿)

a = 2; b = " +2"
a == b

ʸ»úÎóÈæ³Ó (µ¶)

 
$ echo 1e2 3 | awk '{ print ($1 < $2) ? "true" : "false" }'
-| false
   

¤³¤ÎÎã¤Ç¤Ï`false'¤¬½ÐÎϤµ¤ì¤ë¡£ ¤Ê¤¼¤Ê¤é$1 ¤È $2¤ÎξÊý¤¬¿ôÃÍʸ»úÎó(strnum)°À­¤ò»ý¤Á¡¢ ʸ»úÎó¤Ç¤â¤¢¤ê¿ôÃͤǤ⤢¤ë¤Î¤Ç¿ôÃͤȤ·¤ÆÈæ³Ó¤¬¹Ô¤Ê¤ï¤ì¤¿¤«¤é¤Ç¤¢¤ë¡£ Èæ³Ó¥ë¡¼¥ë¤È¿ôÃÍʸ»úÎó¤ò»ÈÍѤ¹¤ëÌÜŪ¤Ï¡¢Àµ¤·¤¤Æ°ºî¤ò¡¢ ¶Ã¤¯¤è¤¦¤Ê¤³¤È¤¬¤Ç¤­¤ë¤À¤±¾¯¤Ê¤¯¤Ê¤ë¤è¤¦¤Ë¹Ô¤Ê¤ï¤»¤ë¤È¤¤¤¦¤³¤È¤Ç¤¢¤ë¡£ ʸ»úÎó¤ÎÈæ³Ó¤ÈÀµµ¬É½¸½¤ÎÈæ³Ó¤ÏÈó¾ï¤Ë°Û¤Ê¤Ã¤Æ¤¤¤ë¡£Îã¤òµó¤²¤ë¤È¡¢

 
x == "foo"
   

¤³¤Î¼°¤ÏÊÑ¿ôx¤¬`foo'¤Ç¤¢¤ë¤È¤­¤Ë 1¤¢¤ë¤¤¤Ï¿¿¤ÎÃͤò»ý¤Ä¡£ ÂоÈŪ¤Ë¡¢

 
x ~ /foo/
   

¤³¤Î¼°¤Ïx¤Ë`foo'¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤â¤Î¡¢ Î㤨¤Ð "Oh, what a fool am I!"¤Ç¤¢¤ì¤Ð¼°¤ÎÃͤÏ1¤È¤Ê¤ë¡£

`~' ±é»»»Ò¤ä `!~'±é»»»Ò¤Î±¦Â¦¤Ë¤¯¤ë¥ª¥Ú¥é¥ó¥É¤Ï Àµµ¬É½¸½Äê¿ô(/…/)¤Ç¤â¤¢¤ê¡¢Ä̾ï¤Î¼°¤Ç¤â¤¢¤ë¡£ ¤³¤ì¤Ï¡¢¤Á¤ç¤¦¤Éʸ»úÎó¤È¤·¤Æ¤Î¼°¤ÎÃͤ¬ ưŪÀµµ¬É½¸½ (see section Àµµ¬É½¸½¤Î»È¤¤Êý¤Èsee section ưŪÀµµ¬É½¸½¤ò»È¤¦) ¤Ç¤¢¤ë¤È¤¤¤¦¤³¤È¤ÈƱ¤¸¤Ç¤¢¤ë

ºÇ¶á¤Îawk¤Î½èÍý·Ï¤Ç¤Ï¥¹¥é¥Ã¥·¥å¤Ç°Ï¤Þ¤ì¤¿Àµµ¬É½¸½Äê¿ô¤Ï¤½¤ì¼«ÂΤ¬¼°¤Ç¤¢¤ê¡¢ /regexp/¤È¤¤¤¦Àµµ¬É½¸½¤Ï°Ê²¼¤ÎÈæ³Ó¼°¤Î¾Êά·Á¤Ç¤¢¤ë¡£

 
$0 ~ /regexp/
   

/foo/ ¤¬`$0 ~ /foo/' ¤Î¾Êά·Á¤Ë¤Ê¤é¤Ê¤¤ÆÃÊ̤ʾì½ê¤Ï¡¢ `~'±é»»»Ò¤ä`!~'¤Î±¦ÊդΥª¥Ú¥é¥ó¥É¤Ç¤¢¤ë¡£ ¾Ü¤·¤¯¤Ïsee section Àµµ¬É½¸½Äê¿ô¤ò»È¤¦¤Ç½Ò¤Ù¤é¤ì¤Æ¤¤¤ë¡£


[ < ] [ > ]   [ << ] [ Up ] [ >> ]         [Top] [Contents] [Index] [ ? ]

5.11 ¥Ö¡¼¥ë¼°

¥Ö¡¼¥ë¼°(Boolean expression)¤ÏÈæ³Ó¼°¤ä¥Þ¥Ã¥Á¥ó¥°¼°¤òÏÀÍý±é»»»Ò ``¤Þ¤¿¤Ï''(`||') ¤ä ``¤«¤Ä''(`&&')¡¢ ÈÝÄê(`!') ¤òÍѤ¤¤Æ·Ò¤²¤¿¤â¤Î¤Ç¤¢¤ë¡£ ÏÀÍý¼°Á´ÂΤο¿µ¶¤Ï³ÆÉôʬ¼°¤Î¿¿µ¶ÃͤÎÁȤ߹ç¤ï¤»¤Ë¤è¤Ã¤Æ·èÄꤵ¤ì¤ë¡£ ¥Ö¡¼¥ë¼°¤ÏÏÀÍý¼°¤Ç¤â¤¢¤ê¡¢¤³¤ì¤éÆó¤Ä¤Îñ¸ì¤Î°ÕÌ£¤ÏƱ¤¸¤Ç¤¢¤ë¡£

¥Ö¡¼¥ë¼°¤Ï¡¢Èæ³Ó¼°¤ä¥Þ¥Ã¥Á¥ó¥°¼°¤òµ­½Ò¤Ç¤­¤ë¤È¤³¤í¤Ç¤¢¤ì¤Ð¤É¤³¤Ç¤â µ­½Ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¤·¡¢if¡¢while¡¢do ¤ä for ¤È¤¤¤Ã¤¿Ê¸¤Î¤Ê¤«¤Ç»È¤¦¤³¤È¤â¤Ç¤­¤ë (see section ¥¢¥¯¥·¥ç¥óÃæ¤ÎÀ©¸æÊ¸)¡£¥Ö¡¼¥ë¼°¤Ï¿¿¤Î¤È¤­1¡¢µ¶¤Î¤È¤­0¤ÎÃͤò»ý¤Á¡¢ ¤½¤Î·ë²Ì¤òÊÑ¿ô¤Ë³ÊǼ¤·¤¿¤ê»»½Ñ¼°¤Ë»È¤¦¤³¤È¤â¤Ç¤­¤ë¡£

¤½¤ì¤Ë²Ã¤¨¤Æ¡¢¤½¤ì¤¾¤ì¤Î¥Ö¡¼¥ë¼°¤ÏÀµ¤·¤¤ÏÀÍý¥Ñ¥¿¡¼¥ó¤Ç¤â¤¢¤ë¤Î¤Ç¡¢ ¥ë¡¼¥ë¤Î¼Â¹Ô¤òÀ©¸æ¤¹¤ë¥Ñ¥¿¡¼¥ó¤È¤·¤Æ»È¤¦¤³¤È¤â¤Ç¤­¤ë ¥Ö¡¼¥ë±é»»»Ò¤Ë¤Ï°Ê²¼¤Î¤â¤Î¤¬¤¢¤ë¡£

boolean1 && boolean2

boolean1 ¤È boolean2¤ÎξÊý¤È¤â¤¬¿¿¤Î¤È¤­¤Ë¿¿¤È¤Ê¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¼¡¤ÎÎã¤Ç¤Ï¥«¥ì¥ó¥ÈÆþÎϥ쥳¡¼¥É¤Ë`2400' ¤È `foo' ¤ÎξÊý¤¬´Þ¤Þ¤ì¤Æ¤¤¤ë¤È¤­¤Ë¤½¤Î¥ì¥³¡¼¥É¤¬½ÐÎϤµ¤ì¤ë¡£

 
if ($0 ~ /2400/ && $0 ~ /foo/) print
   

Éôʬ¼°boolean2¤Ï¡¢boolean1¤¬¿¿¤Ç¤¢¤Ã¤¿¤È¤­¤Ë¤Î¤ßɾ²Á¤¬¹Ô¤Ê¤ï¤ì¤ë¡£ ¤³¤Î¤³¤È¤Ë¤è¤Ã¤Æ¡¢boolean2¤¬ÉûºîÍѤò»ý¤Ä¼°¤Ç¤¢¤Ã¤¿¤È¤­¤Ë °ã¤Ã¤¿·ë²Ì¤Ë¤Ê¤ë¤è¤¦¤Ë¤¹¤ë¤³¤È¤â¤Ç¤­¤ë¡£ ¤¿¤È¤¨¤Ð `$0 ~ /foo/ & ($2 == bar++)'¤È¤¤¤Ã¤¿¼°¤Ç¤Ï¡¢ `foo'¤¬¥ì¥³¡¼¥ÉÃæ¤Ë¸ºß¤·¤Ê¤«¤Ã¤¿¾ì¹ç¤Ë¤ÏÊÑ¿ôbar¤Ï¥¤¥ó¥¯¥ê¥á¥ó¥È¤µ¤ì¤Ê¤¤¡£

boolean1 || boolean2

boolean1 ¤« boolean2¤Î¾¯¤Ê¤¯¤È¤â¤É¤Á¤é¤«°ìÊý¤Ç¤â¿¿¤Ç¤¢¤ì¤Ð ÏÀÍý¼°Á´ÂΤ¬¿¿¤È¤Ê¤ë¡£¤¿¤È¤¨¤Ð¡¢¼¡¤ÎÎã¤Ç¤Ï `2400' ¤«`foo'¤Î¤É¤Á¤é¤«°ìÊý¡¢¤¢¤ë¤¤¤Ï¤½¤ÎξÊý¤¬ ÆþÎÏ¥Õ¥¡¥¤¥ë`BBS-list'¤«¤é¤ÎÆþÎϥ쥳¡¼¥ÉÃæ¤Ë¤¢¤Ã¤¿¤È¤­¤Ë ¤½¤Î¥ì¥³¡¼¥É¤ò½ÐÎϤ¹¤ë¡£

 
if ($0 ~ /2400/ || $0 ~ /foo/) print
   

Éôʬ¼°boolean2¤Ï¡¢boolean1¤¬µ¶¤Ç¤¢¤Ã¤¿¤È¤­¤Ë¤À¤±É¾²Á¤¬¹Ô¤Ê¤ï¤ì¤ë¡£ ¤³¤Î¤³¤È¤Ë¤è¤ê¡¢boolean2¤¬ÉûºîÍѤò»ý¤Ã¤Æ¤¤¤¿¤È¤­¤Ë¤Ï °Û¤Ê¤Ã¤¿·ë²Ì¤ò¤â¤¿¤é¤¹¤³¤È¤â¤¢¤ë¡£

! boolean

boolean¤¬µ¶¤Ç¤¢¤ë¤È¤­¤Ë¿¿¤È¤Ê¤ë¡£ ¤¿¤È¤¨¤Ð¡¢¼¡¤ÎÎã¤Ç¤Ï HOME´Ä¶­ÊÑ¿ô¤¬Ì¤ÄêµÁ¤Ç¤¢¤ë¤È¤­¤Ë`no home!'¤ò ½ÐÎϤ¹¤ë¡£

 
BEGIN { if (! ("HOME" in ENVIRON))
               print "no home!" }
   

in±é»»»Ò¤ÏÇÛÎóÍ×ÁǤؤλ²¾È¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¡£

`&&'±é»»»Ò¤ä`||'±é»»»Ò¤Ï¡¢ ¤½¤Îưºî¤«¤éûÍíɾ²Á (short-circuit)±é»»»Ò¤È¸Æ¤Ð¤ì¤ë¡£ °ìÉôʬ¤òɾ²Á¤¹¤ë¤³¤È¤ÇÁ´ÂΤÎÃͤò·èÄê¤Ç¤­¤ë¾ì¹ç¤Ë¤Ï¡¢ ¼°Á´ÂΤÎɾ²Á¤Ï"ûÍí"(short-circuited)¤µ¤ì¤ë¡£

`&&' ¤ä `||'¤Î¸å¤Ë²þ¹Ô¤òÃÖ¤¯¤³¤È¤Ë¤è¤Ã¤Æ¡¢¹Ô¤Î·Ñ³¤ò¤¹¤ë¤³¤È¤¬¤Ç¤­¤ë¡£ ¤·¤«¤·¡¢²þ¹Ô¤ò¤³¤ì¤é¤Î±é»»»Ò¤ÎÁ°¤Ë¥Ð¥Ã¥¯¥¹¥é¥Ã¥·¥å¤Ë¤è¤ë¹Ô·Ñ³¤Ê¤·¤ÇÃÖ¤¯¤³¤È¤Ï¤Ç¤­¤Ê¤¤ (see section awk Statements Versus Lines)¡£

`!'±é»»»Ò¤ò»È¤Ã¤¿¼°¤ÎÃͤÏ1¤«0¤Î¤¤¤º¤ì¤«¤Ë¤Ê¤ë¡£ ¤³¤ì¤Ï±é»»»Ò¤òŬÍѤ·¤¿¼°¤Î¿¿µ¶¤ÎÃͤˤè¤ë¡£ `!'±é»»»Ò¤Ï¥Õ¥é¥°ÊÑ¿ô¤Î°ÕÌ£¤ò¿¿¤«¤éµ¶¤ËÊѤ¨¤¿¤ê¡¢ µÕÊý¸þ¤ËÊѤ¨¤ë¤Î¤Ë¤è¤¯»È¤ï¤ì¤ë¡£ Î㤨¤Ð¡¢¼¡¤Î¥×¥í¥°¥é¥à¤ÏÆÃ¼ì¤Ê¥Ñ¥¿¡¼¥ó¹Ô¤Î´Ö¤Î¹Ô¤ò½ÐÎϤ¹¤ë¤â¤Î¤Ç¤¢¤ë¡£

 
$1 == "START"   { interested = ! interested; next }
interested == 1 { print }
$1 == "END"     { interested = ! interested; next }
   

interested¤È¤¤¤¦ÊÑ¿ô¤Ï¡¢awk¤Î¤¹¤Ù¤Æ¤ÎÊÑ¿ô¤ÈƱÍÍ¤Ë ½é´üÃÍ0(µ¶)¤Ç¥¹¥¿¡¼¥È¤¹¤ë¡£ ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤¬`START'¤Ç¤¢¤ë¤è¤¦¤Ê¹Ô¤ò¸«¤Ä¤±¤¿¤È¤­¡¢ interested¤ÎÃÍ¤Ï `!'¤ò»È¤Ã¤Æ¿¿¤Ø¤ÈÊѤï¤ë¡£ ºÇ½é¤Î¥Õ¥£¡¼¥ë¥É¤¬`END'¤Ç¤¢¤ë¤è¤¦¤Ê¹Ô¤ò¸«¤Ä¤±¤¿¤È¤­¡¢ interested¤Ïµ¶¤Ø¤ÈÌá¤ë¡£

Ãí°Õ: nextʸ¤Ïnext ʸ¤ÇÀâÌÀ¤µ¤ì¤Æ¤¤¤ë¡£ next¤Ïawk¤ËÂФ·¤Æ»Ä¤ê¤Î¥ë¡¼¥ë¤ò¥¹¥­¥Ã¥×¤·¤Æ ¼¡¤Î¥ì¥³¡¼¥É¤ò¼è¤ê¹þ¤ß¡¢¤½¤·¤Æ¥ë¡¼¥ë·²¤ÎÀèÆ¬¤«¤é½èÍý¤ò»Ï¤á¤ë¤è¤¦¤Ë »Ø¼¨¤¹¤ë¡£¤³¤ì¤ò»È¤