sed & awkプログラミング 改訂版

[cover photo]
TOPICS
発行年月日
PRINT LENGTH
488
ISBN
978-4-900900-58-5
原書
sed & awk 2nd Edition
FORMAT
Print
Print
4,510円

sedとawkは、UNIXの世界で、システム管理やプログラミングを問わず必須のツールといえます。本書は、この2つのツールの解説書として定番の書籍です。改訂にあたっては、POSIXに対応するための修正、最新のsed、awkのバージョンについての加筆修正はもちろんのこと、本文の見直しもしました。さらに、いくつかの市販awkやフリーソフトウェアのawkについての解説も追加しました。

正誤表

ここで紹介する正誤表には、書籍発行後に気づいた誤植や更新された情報を掲載しています。以下のリストに記載の年月は、正誤表を作成し、増刷書籍を印刷した月です。お手持ちの書籍では、すでに修正が施されている場合がありますので、書籍最終ページの奥付でお手持ちの書籍の刷版、刷り年月日をご確認の上、ご利用ください。

正誤表1 ----- 1999年7月

「sed & awkプログラミング 改訂版」 正誤表

この正誤表は第1刷についてのものです。第2刷以降の書籍をお持ちの場合は、
すでに修正されていますのであらかじめご留意ください。
ここに掲載されていない誤植にお気づきの場合は、japan@oreilly.comまでご連絡
ください。


7 ページ  「3.シェルと対話…」の末尾に注を追加
<追加>
もっとも、histchars変数を設定するという手があるにはあるが、それについてはcshのmanページを参照。

26 ページ 中央のコード 下から4〜5行目に一行追加
<修正前>
	$1 != LastState {
	      LastState = $1
	      print $1
	}'
<修正後>
	$1 != LastState {
	      LastState = $1
	      print $1
	      print "?t" $2
	}'


27 ページ 末尾のコードさしかえ(28ページにつづく)

<修正後>
$1 == LastState {
    print "?t" $2
}
$1 != LastState {
    LastState = $1
    print $1
    print "?t" $2
}


32 ページ 図3−1 左上 パターン

<修正前>
   (文字列abc)
<修正後>
   パターン
   (文字列abe)


32 ページ 図3−1 
<修正>3.の項目のa を2つとも太字に

43 ページ 表3−3 [:alnum:]と[:print:]の項目
<修正前>
英数カ字
<修正後>
印字可能な文字(空白文字を含む)


50 ページ 1行目
<修正前>
この式は、”1001”、”1001”、
<修正後>
この式は、”1001”、”10001”、


51 ページ 3.2.11 2行目
<修正前>
…考えてみよう。単語を探索する…
<修正後>
…考えてみよう。grepで単語を探索する…


81、82 ページ
<修正前>
Chapter
<修正後>
CHAPTER
*2ヶ所修正

82 ページ 3つめの段落 3行目
<修正前>
次に示すのは、TeXファイル用の…
<修正後>
次に示すのは、LaTeXファイル用の…


90 ページ 2行目
<修正前>
は空白と改行文字以外のどんな文字も…
<修正後>
は改行文字以外のどんな文字も…


92 ページ 4つめのコード
<修正前>
/^.Ah/{
s/.Ah */?
?
<修正後>
/^.Ah/{
s/?.Ah */?
?


98 ページ 注5を以下にさしかえ

オリジナルのUNIXのマニュアルには、指定したテキストの行頭にあるタブや空白は一切出力されないと書いてある。SunOS 4.1.x、あるいはSolarisの/usr/ucb/sedのような古めのバージョンではその通りになるが、System VとGNUのsedでは先頭の空白は削除されない。自分のシステムで行頭の空白類が出力されないようなら、バックスラッシュを行頭(タブやスペースの前)に入れればいい。このバックスラッシュは出力されない。

112 ページ 中央
<修正前>
.Rh 0 "DBclose" "Closes a database file"
<修正後>
.Rh 0 "DBclose" "Closes a database"


117 ページ 2つめのコードを以下のコードにさしかえ
<差し替え>
  sed -n "
  /^?.de *$mac/,/^?.?.$/{
  p
  /^?.?.$/q
  }" $file


117 ページ 3つめのコードを以下のコードにさしかえ
<差し替え>
/^?.?.$/q


172 ページ 下から2行目
<修正>
Phyllis ...
2 records ...
の間に空行を1行追加

191 ページ 下から3行目(本文の最後)に以下の注を追加

これが動作するためにはPOSIX互換のawkが必要なので注意。ただ、その名前はawkだったりnawkだったりそれ以外の名前がついている場合があるので、自分のシステムのドキュメントをチェックしてみること。

218 ページ コード6行目と7行目の間に1行追加
<追加>
acronym =$i

246 ページ 1行目
<修正前>
	for (j - i; ARRAY[j-1] > ARRAY[j]; --j) {
<修正後>
	for (j = i; (j-1) in ARRAY && ARRAY[j-1] >

246 ページ 本文の3行目
<修正前>
最初と2番目の要素を交換する。実際に…
<修正後>
最初と2番目の要素を交換する*5。実際に…
注:*5、は上付き文字

246 ページ 脚注5追加

ARRAYにj-1が存在するかどうかを最初にテストしているのは、配列の先頭を踏み越さないようにするため。

248、250 ページ
注の番号送り直し

263 ページ 下から3行目のコード
<修正>
末尾に「 -」を追加

274 ページ 下のaddemupの実行例の1行目
<修正前>
$ addemup orders.today
<修正後>
$ addemup orders


286 ページ 11.1.5 のコードの2行目
<修正前>
#! /bin/sh
<修正後>
#!/bin/sh


305 ページ 下のコードのインデントを正す
<修正後>
	a[1][1] = "hello"
	a[1][2] = "world"
	for (i in a [1])
		print a[1][i]


更新日 7/19/99

正誤表2 ----- 1999年10月

「sed & awkプログラミング 改訂版」 正誤表


この正誤表は第2刷についてのものです。第3刷以降の書籍をお持ちの場合は、
すでに修正されていますのであらかじめご留意ください。
ここに掲載されていない誤植にお気づきの場合は、
japan@oreilly.comまでご連絡ください。


<修正前>
ファイル名は/pub/gnu/gawk-3.0.3.tar.gz
<修正後>
ファイル名は/pub/gnu/gawk-3.0.4.tar.gz

更新日 99/10/28

正誤表3 ----- 2003年11月

『sed & awkプログラミング 改訂版』7刷用修正

この正誤表は第6刷までについてのものです。第7刷以降の書籍をお持ちの場合は、
すでに修正されていますのであらかじめご留意ください。
ここに掲載されていない誤植にお気づきの場合は、
japan@oreilly.comまでご連絡ください。



177ページ 本文下から4行目
<修正前>関係演算子 (マッチする)や! (マッチしない)
<修正後>関係演算子~(マッチする)や!~(マッチしない)
※ チルダ(~)が2箇所抜け


翻訳者紹介
<修正前>
kludge@pa.aix.orjp
<修正後>
kludge@tka.att.ne.jp

2003/11/25

目次

はじめに
        本書の内容
        プログラムの入手方法
        ソースコードの入手
        本書の表記法
        第2版について
        第1版の謝辞
        ご意見、ご質問の宛て先

1章 編集用パワーツール
        1.1 面白き課題を解けよ柿の種
        1.2 ストリームエディタ
        1.3 パターンマッチングプログラミング言語
        1.4 sedとawkの4つのハードル

2章 基本的な使い方
        2.1 ed発sed & grep経由awk行き
        2.2 コマンドラインの構文
        2.3 sedの使い方
        2.4 awkの使い方
        2.5 sedとawkの組み合わせ

3章 正規表現
        3.1 正規表現は式だ
        3.2 これが正規表現だ
        3.3 私の好きな正規表現

4章 sedスクリプトの書き方
        4.1 スクリプト中のコマンドの適用
        4.2 アドレッシングに関するグローバルな考察
        4.3 出力のテストと保存
        4.4 4つのタイプのsedスクリプト
        4.5 約束の地へ

5章 sedの基本コマンド
        5.1 sedコマンドの構文
        5.2 コメント
        5.3 置換
        5.4 削除
        5.5 追加、挿入、変更
        5.6 リスト
        5.7 変換
        5.8 表示
        5.9 行番号の表示
        5.10 次行読み込み
        5.11 ファイルの読み込みと書き出し
        5.12 終了

6章 sedの高度なコマンド
        6.1 複数行のパターンスペース
        6.2 ケーススタディ
        6.3 行の保管
        6.4 高度なフロー制御コマンド
        6.5 フレーズの結合

7章 awkスクリプトの書き方
        7.1 ゲームの遊び方
        7.2 Hello World
        7.3 awkのプログラミングモデル
        7.4 パターンマッチング
        7.5 レコードとフィールド
        7.6 式
        7.7 システム変数
        7.8 関係演算子と論理演算子
        7.9 フォーマット出力
        7.10 スクリプトへのパラメータの渡し方
        7.11 情報の抽出

8章 条件、ループ、配列
        8.1 条件文
        8.2 ループ
        8.3 フロー制御用のその他の文
        8.4 配列
        8.5 略語プロセッサ
        8.6 配列になったシステム変数

9章 関数
        9.1 算術関数
        9.2 文字列関数
        9.3 ユーザ定義関数の記述

10章 一番下の引き出し
        10.1 getline関数
        10.2 close()関数
        10.3 system()関数
        10.4 メニューベースのコマンドジェネレータ
        10.5 ファイルやパイプへの出力
        10.6 帳票の生成
        10.7 デバッグ
        10.8 制限事項
        10.9 #!構文によるawkの起動

11章 いろいろなawk
        11.1 オリジナルawk
        11.2 無料で入手可能なawk
        11.3 製品版のawk
        11.4 エピローグ

12章 実用アプリケーションの開発
        12.1 対話的スペルチェッカ
        12.2 索引の生成
        12.3 masterindexで使った技

13章 スクリプト集
        13.1 uutot.awk −UUCPの統計の報告
        13.2 phonebill −電話の利用状況の報告
        13.3 combine −分割されたuuencodeバイナリの抽出
        13.4 mailavg −メールボックスのサイズのチェック
        13.5 adj −テキストファイルの行の整形
        13.6 readsource −プログラムソースファイルのtroff用フォーマッティング
        13.7 gent −termcapエントリの取得
        13.8 plpr −lprプリプロセッサ
        13.9 transpose −行列の転置
        13.10 m1 −非常にシンプルなマクロプロセッサ

付録A sedクイックリファレンス
        A.1 コマンドラインの構文
        A.2 sedコマンドの構文
        A.3 sedのコマンド

付録B awkクイックリファレンス
        B.1 コマンドラインの?分
        B.2 awk言語の概要
        B.3 awkのコマンド

付録C 12章の補足
        C.1 spellcheck.awkの全リスト
        C.2 masterindexシェルスクリプトのリスト
        C.3 masterindexのマニュアル
索引