Next: , Previous: Line Group Formats, Up: If-then-else


2.6.2 行の書式

行の書式は,if-then-else書式での行のグループの部分として入力行から出力行 に持っていく行数を制御します.

例えば,以下のコマンドは,テキストの左に変更を示す単一の文字を用いてテキ ストを出力します.出力の最初の文字は,削除行に対する‘-’,追加行に対 する‘|’,そして変更されていない行に対するスペースです.その書式には, 出力に概況が必要な場所では,改行文字が含まれます.

     diff \
        --old-line-format='-%l
     ' \
        --new-line-format='|%l
     ' \
        --unchanged-line-format=' %l
     ' \
        old new

行の書式を指定するために,以下のオプションの一つを使用してください.シェ ルのメタ文字を含むことが多いので,formatを引用符で囲むべきです.

--old-line-format=format
最初のファイルからの行だけ書式化します.
--new-line-format=format
二番目のファイルからの行だけ書式化します.
--unchanged-line-format=format
両方のファイルに共通の行を書式化します.
--line-format=format
すべての行を書式化します.影響として,上記の三つのオプションすべてを同時 に設定します.

行の書式では,通常の文字はそれ自身を示します.変換指定は‘%’で始め, 以下の形式の一つを用います.

%l
行の内容を意味し,後置される改行は(存在しても)数えません.この書式は行が 不完全かどうかを無視します.See Incomplete Lines.
%L
行の内容を意味し,後置される改行を(存在する場合)含みます.行が不完全な場 合,この書式はその不完全さを保持します.
%%
%’を意味します.
%c'C'
ここでのCは単一文字で,Cを意味します.Cをバックスラッ シュにしたりアポストロフィーにしたりしてはいけません.例えば, ‘%c':'’はコロンを意味します.
%c'\O'
ここでのOは1桁,2桁,または3桁の8進数で,8進コードOの文字を 意味します.例えば,‘%c'\0'’はヌル文字を意味します.
Fn
ここでのFprintfの変換指定で,Fで書式化された行番号 を意味します.例えば‘%.5dn’は,printfの書式"%.5d"を使 用して行番号を出力します.printf変換指定の詳細は,See Line Group Formats.

デフォルトの行の書式は,改行文字が続く‘%l’です.

入力にタブ文字が含まれていて,それが出力行にとって重要な場合,行の書式の ‘%l’や‘%L’をタブの直後に書くか(例えば, ‘%l’ や ‘%L’を前置してタブ文字を使用します),-t--expand-tabsオプションを使用すべきです.

行と行のグループの書式を組み合わせると,様々な書式を指定することが可能に なります.例えば以下のコマンドで,通常のdiffの書式に似たものを 使用します.diffの出力を詳細に制御するために,このコマンドに手 を加えることも可能です.

     diff \
        --old-line-format='< %l
     ' \
        --new-line-format='> %l
     ' \
        --old-group-format='%df%(f=l?:,%dl)d%dE
     %<' \
        --new-group-format='%dea%dF%(F=L?:,%dL)
     %>' \
        --changed-group-format='%df%(f=l?:,%dl)c%dF%(F=L?:,%dL)
     %<---
     %>' \
        --unchanged-group-format='' \
        old new