次: Line Formats, 上: If-then-else
行のグループを使用した書式で,プログラミング言語とテキストの書式化言語が 含まれる,if-then-elseの入力が可能な多くのアプリケーションに適した書式を 指定することができます.行のグループを使用した書式で,類似した行の連続し たグループに対して出力書式を指定します.
例えば,以下のコマンドで,TeXファイルのoldとnewを比較し, 古い領域の周りに`\begin{em}'-`\end{em}'行を書き,新しい領 域の周りに`\begin{bf}'-`\end{bf}'行を書くことで,出力をマー ジします.
diff \ --old-group-format='\begin{em} %<\end{em} ' \ --new-group-format='\begin{bf} %>\end{bf} ' \ old new
以下のコマンドは上記の例と等価ですが,デフォルトの行のグループを使用した 書式で綴っているので,若干冗長になっています.
diff \ --old-group-format='\begin{em} %<\end{em} ' \ --new-group-format='\begin{bf} %>\end{bf} ' \ --unchanged-group-format='%=' \ --changed-group-format='\begin{em} %<\end{em} \begin{bf} %>\end{bf} ' \ old new
以下はより高度な例で,“plain English”形式の行番号を含むヘッダを用いて 差分リストを出力します.
diff \ --unchanged-group-format='' \ --old-group-format='-------- %dn line%(n=1?:s) deleted at %df: %<' \ --new-group-format='-------- %dN line%(N=1?:s) added after %de: %>' \ --changed-group-format='-------- %dn line%(n=1?:s) changed at %df: %<-------- to: %>' \ old new
行のグループを使用した書式を指定するために,以下でリストアップするオプショ ンの一つを使用してください.行のグループを使用した書式のうち四つまで指定 することが可能で,それぞれの行のグループの種類になります.通常 formatはシェルのメタ文字を含んでいるので,引用符で囲むべきです.
行のグループを使用した書式では,通常の文字はそのまま表示されます.伝統的 な仕様は,`%'で開始し以下の形式の一つが続きます.
printf
の変換を指定し,nは以下の文字の一つに
なり,Fで書式化されるnの値を意味します.
printf
の変換指定は,`%d',`%o',`%x',または
`%X'が可能で,それぞれ,10進数,8進数,小文字の16進数,または大文字
の16進数の出力を指定します.`%'の後に続くオプションを順番に表します.
ゼロ以上のフラグの列.最小フィールド幅の整数.そして,ピリオドに続く桁数
の最小値を指定する追加の整数.フラグは,左寄せに対する`-',
LC_NUMERICロケールのカテゴリで指定される,グループごとの桁数に分離
する`'',そして,スペースの変わりにゼロでパディングするための
`0'です.例えば,`%5dN'はグループの新しい行の数を,五文字幅の
フィールドで,printf
の書式"%5d"
で出力します.
例えば`%(N=0?no:%dN) line%(N=1?:s)'は,N(新しいファイルのグルー プの行数)が0の場合は`no lines'と等価で,Nが1の場合は`1 line'と等価で,それ以外の場合は`%dN lines'と等価になります.