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

7. Operating on sorted files

These commands work with (or produce) sorted files.

7.1 sort: Sort text files  Sort text files.
7.2 uniq: Uniquify files  Uniquify files.
7.3 comm: Compare two sorted files line by line  Compare two sorted files line by line.
7.6 ptx: Produce permuted indexes  Produce a permuted index of file contents.
7.4 tsort: Topological sort  Topological sort.
7.5 tsort: Background  Where tsort came from.


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

7.1 sort: Sort text files

sort sorts, merges, or compares all the lines from the given files, or standard input if none are given or for a file of `-'. By default, sort writes the results to standard output. Synopsis:

 
sort [option]... [file]...

sort has three modes of operation: sort (the default), merge, and check for sortedness. The following options change the operation mode:

`-c'
`--check'
Check whether the given files are already sorted: if they are not all sorted, print an error message and exit with a status of 1. Otherwise, exit successfully.

`-m'
`--merge'
Merge the given files by sorting them as a group. Each input file must always be individually sorted. It always works to sort instead of merge; merging is provided because it is faster, in the case where it works.

A pair of lines is compared as follows: if any key fields have been specified, sort compares each pair of fields, in the order specified on the command line, according to the associated ordering options, until a difference is found or no fields are left. Unless otherwise specified, all comparisons use the character collating sequence specified by the LC_COLLATE locale. (1)

If any of the global options `bdfgiMnr' are given but no key fields are specified, sort compares the entire lines according to the global options.

Finally, as a last resort when all keys compare equal (or if no ordering options were specified at all), sort compares the entire lines. The last resort comparison honors the `--reverse' (`-r') global option. The `--stable' (`-s') option disables this last-resort comparison so that lines in which all fields compare equal are left in their original relative order. If no fields or global options are specified, `--stable' (`-s') has no effect.

GNU sort (as specified for all GNU utilities) has no limits on input line length or restrictions on bytes allowed within lines. In addition, if the final byte of an input file is not a newline, GNU sort silently supplies one. A line's trailing newline is not part of the line for comparison purposes.

Upon any error, sort exits with a status of `2'.

If the environment variable TMPDIR is set, sort uses its value as the directory for temporary files instead of `/tmp'. The `--temporary-directory' (`-T') option in turn overrides the environment variable.

The following options affect the ordering of output lines. They may be specified globally or as part of a specific key field. If no key fields are specified, global options apply to comparison of entire lines; otherwise the global options are inherited by key fields that do not specify any special options of their own. In pre-POSIX versions of sort, global options affect only later key fields, so portable shell scripts should specify global options first.

`-b'
`--ignore-leading-blanks'
Ignore leading blanks when finding sort keys in each line. The LC_CTYPE locale determines character types.

`-d'
`--dictionary-order'
Sort in phone directory order: ignore all characters except letters, digits and blanks when sorting. The LC_CTYPE locale determines character types.

`-f'
`--ignore-case'
Fold lowercase characters into the equivalent uppercase characters when comparing so that, for example, `b' and `B' sort as equal. The LC_CTYPE locale determines character types.

`-g'
`--general-numeric-sort'
Sort numerically, using the standard C function strtod to convert a prefix of each line to a double-precision floating point number. This allows floating point numbers to be specified in scientific notation, like 1.0e-34 and 10e100. The LC_NUMERIC locale determines the decimal-point character. Do not report overflow, underflow, or conversion errors. Use the following collating sequence:

Use this option only if there is no alternative; it is much slower than `--numeric-sort' (`-n') and it can lose information when converting to floating point.

`-i'
`--ignore-nonprinting'
Ignore nonprinting characters. The LC_CTYPE locale determines character types.

`-M'
`--month-sort'
An initial string, consisting of any amount of whitespace, followed by a month name abbreviation, is folded to UPPER case and compared in the order `JAN' < `FEB' < ... < `DEC'. Invalid names compare low to valid names. The LC_TIME locale category determines the month spellings.

`-n'
`--numeric-sort'
Sort numerically: the number begins each line; specifically, it consists of optional whitespace, an optional `-' sign, and zero or more digits possibly separated by thousands separators, optionally followed by a decimal-point character and zero or more digits. The LC_NUMERIC locale specifies the decimal-point character and thousands separator.

Numeric sort uses what might be considered an unconventional method to compare strings representing floating point numbers. Rather than first converting each string to the C double type and then comparing those values, sort aligns the decimal-point characters in the two strings and compares the strings a character at a time. One benefit of using this approach is its speed. In practice this is much more efficient than performing the two corresponding string-to-double (or even string-to-integer) conversions and then comparing doubles. In addition, there is no corresponding loss of precision. Converting each string to double before comparison would limit precision to about 16 digits on most systems.

Neither a leading `+' nor exponential notation is recognized. To compare such strings numerically, use the `--general-numeric-sort' (`-g') option.

`-r'
`--reverse'
Reverse the result of comparison, so that lines with greater key values appear earlier in the output instead of later.

Other options are:

`-o output-file'
`--output=output-file'
Write output to output-file instead of standard output. If necessary, sort reads input before opening output-file, so you can safely sort a file in place by using commands like sort -o F F and cat F | sort -o F.

On newer systems, `-o' cannot appear after an input file if POSIXLY_CORRECT is set, e.g., `sort F -o F'. Portable scripts should specify `-o output-file' before any input files.

`-S size'
`--buffer-size=size'
Use a main-memory sort buffer of the given size. By default, size is in units of 1024 bytes. Appending `%' causes size to be interpreted as a percentage of physical memory. Appending `K' multiplies size by 1024 (the default), `M' by 1,048,576, `G' by 1,073,741,824, and so on for `T', `P', `E', `Z', and `Y'. Appending `b' causes size to be interpreted as a byte count, with no multiplication.

This option can improve the performance of sort by causing it to start with a larger or smaller sort buffer than the default. However, this option affects only the initial buffer size. The buffer grows beyond size if sort encounters input lines larger than size.

`-t separator'
`--field-separator=separator'
Use character separator as the field separator when finding the sort keys in each line. By default, fields are separated by the empty string between a non-whitespace character and a whitespace character. That is, given the input line ` foo bar', sort breaks it into fields ` foo' and ` bar'. The field separator is not considered to be part of either the field preceding or the field following. But note that sort fields that extend to the end of the line, as `-k 2', or sort fields consisting of a range, as `-k 2,3', retain the field separators present between the endpoints of the range.

`-T tempdir'
`--temporary-directory=tempdir'
Use directory tempdir to store temporary files, overriding the TMPDIR environment variable. If this option is given more than once, temporary files are stored in all the directories given. If you have a large sort or merge that is I/O-bound, you can often improve performance by using this option to specify directories on different disks and controllers.

`-u'
`--unique'

Normally, output only the first of a sequence of lines that compare equal. For the `--check' (`-c') option, check that no pair of consecutive lines compares equal.

`-k pos1[,pos2]'
`--key=pos1[,pos2]'
Specify a sort field that consists of the part of the line between pos1 and pos2 (or the end of the line, if pos2 is omitted), inclusive. Fields and character positions are numbered starting with 1. So to sort on the second field, you'd use `--key=2,2' (`-k 2,2'). See below for more examples.

`-z'
`--zero-terminated'
Treat the input as a set of lines, each terminated by a zero byte (ASCII NUL (Null) character) instead of an ASCII LF (Line Feed). This option can be useful in conjunction with `perl -0' or `find -print0' and `xargs -0' which do the same in order to reliably handle arbitrary pathnames (even those which contain Line Feed characters.)

Historical (BSD and System V) implementations of sort have differed in their interpretation of some options, particularly `-b', `-f', and `-n'. GNU sort follows the POSIX behavior, which is usually (but not always!) like the System V behavior. According to POSIX, `-n' no longer implies `-b'. For consistency, `-M' has been changed in the same way. This may affect the meaning of character positions in field specifications in obscure cases. The only fix is to add an explicit `-b'.

A position in a sort field specified with the `-k' option has the form `f.c', where f is the number of the field to use and c is the number of the first character from the beginning of the field. In a start position, an omitted `.c' stands for the field's first character. In an end position, an omitted or zero `.c' stands for the field's last character. If the `-b' option was specified, the `.c' part of a field specification is counted from the first nonblank character of the field.

A sort key position may also have any of the option letters `Mbdfinr' appended to it, in which case the global ordering options are not used for that particular field. The `-b' option may be independently attached to either or both of the start and end positions of a field specification, and if it is inherited from the global options it will be attached to both. Keys may span multiple fields.

On older systems, sort supports an obsolete origin-zero syntax `+pos1 [-pos2]' for specifying sort keys. POSIX 1003.1-2001 (see section 2.5 Standards conformance) does not allow this; use `-k' instead.

Here are some examples to illustrate various combinations of options.


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

7.2 uniq: Uniquify files

uniq writes the unique lines in the given `input', or standard input if nothing is given or for an input name of `-'. Synopsis:

 
uniq [option]... [input [output]]

By default, uniq prints the unique lines in a sorted file, i.e., discards all but one of identical successive lines. Optionally, it can instead show only lines that appear exactly once, or lines that appear more than once.

The input need not be sorted, but duplicate input lines are detected only if they are adjacent. If you want to discard non-adjacent duplicate lines, perhaps you want to use sort -u.

Comparisons use the character collating sequence specified by the LC_COLLATE locale category.

If no output file is specified, uniq writes to standard output.

The program accepts the following options. Also see 2. Common options.

`-f n'
`--skip-fields=n'
Skip n fields on each line before checking for uniqueness. Fields are sequences of non-space non-tab characters that are separated from each other by at least one space or tab.

On older systems, uniq supports an obsolete option `-n'. POSIX 1003.1-2001 (see section 2.5 Standards conformance) does not allow this; use `-f n' instead.

`-s n'
`--skip-chars=n'
Skip n characters before checking for uniqueness. If you use both the field and character skipping options, fields are skipped over first.

On older systems, uniq supports an obsolete option `+n'. POSIX 1003.1-2001 (see section 2.5 Standards conformance) does not allow this; use `-s n' instead.

`-c'
`--count'
Print the number of times each line occurred along with the line.

`-i'
`--ignore-case'
Ignore differences in case when comparing lines.

`-d'
`--repeated'
Print one copy of each duplicate line.

`-D'
`--all-repeated[=delimit-method]'
Print all copies of each duplicate line. This option is useful mainly in conjunction with other options e.g., to ignore case or to compare only selected fields. The optional delimit-method tells how to delimit groups of duplicate lines, and must be one of the following:

`none'
Do not delimit groups of duplicate lines. This is equivalent to `--all-repeated' (`-D').

`prepend'
Output a newline before each group of duplicate lines.

`separate'
Separate groups of duplicate lines with a single newline. This is the same as using `prepend', except that there is no newline before the first group, and hence may be better suited for output direct to users.

Note that when groups are delimited and the input stream contains two or more consecutive blank lines, then the output is ambiguous. To avoid that, filter the input through `tr -s '\n'' to replace each sequence of consecutive newlines with a single newline.

This is a GNU extension.

`-u'
`--unique'
Print non-duplicate lines.

`-w n'
`--check-chars=n'
Compare n characters on each line (after skipping any specified fields and characters). By default the entire rest of the lines are compared.


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

7.3 comm: Compare two sorted files line by line

comm writes to standard output lines that are common, and lines that are unique, to two input files; a file name of `-' means standard input. Synopsis:

 
comm [option]... file1 file2

Before comm can be used, the input files must be sorted using the collating sequence specified by the LC_COLLATE locale. If an input file ends in a non-newline character, a newline is silently appended. The sort command with no options always outputs a file that is suitable input to comm.

With no options, comm produces three column output. Column one contains lines unique to file1, column two contains lines unique to file2, and column three contains lines common to both files. Columns are separated by a single TAB character.

The options `-1', `-2', and `-3' suppress printing of the corresponding columns. Also see 2. Common options.

Unlike some other comparison utilities, comm has an exit status that does not depend on the result of the comparison. Upon normal completion comm produces an exit code of zero. If there is an error it exits with nonzero status.


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

7.4 tsort: Topological sort

tsort performs a topological sort on the given file, or standard input if no input file is given or for a file of `-'. For more details and some history, see 7.5 tsort: Background. Synopsis:

 
tsort [option] [file]

tsort reads its input as pairs of strings, separated by blanks, indicating a partial ordering. The output is a total ordering that corresponds to the given partial ordering.

For example

 
tsort <<EOF
a b c
d
e f
b c d e
EOF

will produce the output

 
a
b
c
d
e
f

Consider a more realistic example. You have a large set of functions all in one file, and they may all be declared static except one. Currently that one (say main) is the first function defined in the file, and the ones it calls directly follow it, followed by those they call, etc. Let's say that you are determined to take advantage of prototypes, so you have to choose between declaring all of those functions (which means duplicating a lot of information from the definitions) and rearranging the functions so that as many as possible are defined before they are used. One way to automate the latter process is to get a list for each function of the functions it calls directly. Many programs can generate such lists. They describe a call graph. Consider the following list, in which a given line indicates that the function on the left calls the one on the right directly.

 
main parse_options
main tail_file
main tail_forever
tail_file pretty_name
tail_file write_header
tail_file tail
tail_forever recheck
tail_forever pretty_name
tail_forever write_header
tail_forever dump_remainder
tail tail_lines
tail tail_bytes
tail_lines start_lines
tail_lines dump_remainder
tail_lines file_lines
tail_lines pipe_lines
tail_bytes xlseek
tail_bytes start_bytes
tail_bytes dump_remainder
tail_bytes pipe_bytes
file_lines dump_remainder
recheck pretty_name

then you can use tsort to produce an ordering of those functions that satisfies your requirement.

 
example$ tsort call-graph | tac
dump_remainder
start_lines
file_lines
pipe_lines
xlseek
start_bytes
pipe_bytes
tail_lines
tail_bytes
pretty_name
write_header
tail
recheck
parse_options
tail_file
tail_forever
main

tsort detects any cycles in the input and writes the first cycle encountered to standard error.

Note that for a given partial ordering, generally there is no unique total ordering. In the context of the call graph above, the function parse_options may be placed anywhere in the list as long as it precedes main.

The only options are `--help' and `--version'. See section 2. Common options.


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

7.5 tsort: Background

tsort exists because very early versions of the Unix linker processed an archive file exactly once, and in order. As ld read each object in the archive, it decided whether it was needed in the program based on whether it defined any symbols which were undefined at that point in the link.

This meant that dependencies within the archive had to be handled specially. For example, scanf probably calls read. That means that in a single pass through an archive, it was important for scanf.o to appear before read.o, because otherwise a program which calls scanf but not read might end up with an unexpected unresolved reference to read.

The way to address this problem was to first generate a set of dependencies of one object file on another. This was done by a shell script called lorder. The GNU tools don't provide a version of lorder, as far as I know, but you can still find it in BSD distributions.

Then you ran tsort over the lorder output, and you used the resulting sort to define the order in which you added objects to the archive.

This whole procedure has been obsolete since about 1980, because Unix archives now contain a symbol table (traditionally built by ranlib, now generally built by ar itself), and the Unix linker uses the symbol table to effectively make multiple passes over an archive file.

Anyhow, that's where tsort came from. To solve an old problem with the way the linker handled archive files, which has since been solved in different ways.


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

7.6 ptx: Produce permuted indexes

ptx reads a text file and essentially produces a permuted index, with each keyword in its context. The calling sketch is either one of:

 
ptx [option ...] [file ...]
ptx -G [option ...] [input [output]]

The `-G' (or its equivalent: `--traditional') option disables all GNU extensions and reverts to traditional mode, thus introducing some limitations and changing several of the program's default option values. When `-G' is not specified, GNU extensions are always enabled. GNU extensions to ptx are documented wherever appropriate in this document. For the full list, see See section 7.6.5 The GNU extensions to ptx.

Individual options are explained in the following sections.

When GNU extensions are enabled, there may be zero, one or several files after the options. If there is no file, the program reads the standard input. If there is one or several files, they give the name of input files which are all read in turn, as if all the input files were concatenated. However, there is a full contextual break between each file and, when automatic referencing is requested, file names and line numbers refer to individual text input files. In all cases, the program outputs the permuted index to the standard output.

When GNU extensions are not enabled, that is, when the program operates in traditional mode, there may be zero, one or two parameters besides the options. If there are no parameters, the program reads the standard input and outputs the permuted index to the standard output. If there is only one parameter, it names the text input to be read instead of the standard input. If two parameters are given, they give respectively the name of the input file to read and the name of the output file to produce. Be very careful to note that, in this case, the contents of file given by the second parameter is destroyed. This behavior is dictated by System V ptx compatibility; GNU Standards normally discourage output parameters not introduced by an option.

Note that for any file named as the value of an option or as an input text file, a single dash - may be used, in which case standard input is assumed. However, it would not make sense to use this convention more than once per program invocation.

7.6.1 General options  Options which affect general program behavior.
7.6.2 Charset selection  Underlying character set considerations.
7.6.3 Word selection and input processing  Input fields, contexts, and keyword selection.
7.6.4 Output formatting  Types of output format, and sizing the fields.
7.6.5 The GNU extensions to ptx  


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

7.6.1 General options

`-C'
`--copyright'
Print a short note about the copyright and copying conditions, then exit without further processing.

`-G'
`--traditional'
As already explained, this option disables all GNU extensions to ptx and switches to traditional mode.

`--help'
Print a short help on standard output, then exit without further processing.

`--version'
Print the program version on standard output, then exit without further processing.


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

7.6.2 Charset selection

As it is set up now, the program assumes that the input file is coded using 8-bit ISO 8859-1 code, also known as Latin-1 character set, unless it is compiled for MS-DOS, in which case it uses the character set of the IBM-PC. (GNU ptx is not known to work on smaller MS-DOS machines anymore.) Compared to 7-bit ASCII, the set of characters which are letters is different; this alters the behavior of regular expression matching. Thus, the default regular expression for a keyword allows foreign or diacriticized letters. Keyword sorting, however, is still crude; it obeys the underlying character set ordering quite blindly.

`-f'
`--ignore-case'
Fold lower case letters to upper case for sorting.


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

7.6.3 Word selection and input processing

`-b file'
`--break-file=file'

This option provides an alternative (to `-W') method of describing which characters make up words. It introduces the name of a file which contains a list of characters which cannot be part of one word; this file is called the Break file. Any character which is not part of the Break file is a word constituent. If both options `-b' and `-W' are specified, then `-W' has precedence and `-b' is ignored.

When GNU extensions are enabled, the only way to avoid newline as a break character is to write all the break characters in the file with no newline at all, not even at the end of the file. When GNU extensions are disabled, spaces, tabs and newlines are always considered as break characters even if not included in the Break file.

`-i file'
`--ignore-file=file'

The file associated with this option contains a list of words which will never be taken as keywords in concordance output. It is called the Ignore file. The file contains exactly one word in each line; the end of line separation of words is not subject to the value of the `-S' option.

There is a default Ignore file used by ptx when this option is not specified, usually found in `/usr/local/lib/eign' if this has not been changed at installation time. If you want to deactivate the default Ignore file, specify /dev/null instead.

`-o file'
`--only-file=file'

The file associated with this option contains a list of words which will be retained in concordance output; any word not mentioned in this file is ignored. The file is called the Only file. The file contains exactly one word in each line; the end of line separation of words is not subject to the value of the `-S' option.

There is no default for the Only file. When both an Only file and an Ignore file are specified, a word is considered a keyword only if it is listed in the Only file and not in the Ignore file.

`-r'
`--references'

On each input line, the leading sequence of non-white space characters will be taken to be a reference that has the purpose of identifying this input line in the resulting permuted index. For more information about reference production, see See section 7.6.4 Output formatting. Using this option changes the default value for option `-S'.

Using this option, the program does not try very hard to remove references from contexts in output, but it succeeds in doing so when the context ends exactly at the newline. If option `-r' is used with `-S' default value, or when GNU extensions are disabled, this condition is always met and references are completely excluded from the output contexts.

`-S regexp'
`--sentence-regexp=regexp'

This option selects which regular expression will describe the end of a line or the end of a sentence. In fact, this regular expression is not the only distinction between end of lines or end of sentences, and input line boundaries have no special significance outside this option. By default, when GNU extensions are enabled and if `-r' option is not used, end of sentences are used. In this case, this regex is imported from GNU Emacs:

 
[.?!][]\"')}]*\\($\\|\t\\|  \\)[ \t\n]*

Whenever GNU extensions are disabled or if `-r' option is used, end of lines are used; in this case, the default regexp is just:

 
\n

Using an empty regexp is equivalent to completely disabling end of line or end of sentence recognition. In this case, the whole file is considered to be a single big line or sentence. The user might want to disallow all truncation flag generation as well, through option `-F ""'. See section `Syntax of Regular Expressions' in The GNU Emacs Manual.

When the keywords happen to be near the beginning of the input line or sentence, this often creates an unused area at the beginning of the output context line; when the keywords happen to be near the end of the input line or sentence, this often creates an unused area at the end of the output context line. The program tries to fill those unused areas by wrapping around context in them; the tail of the input line or sentence is used to fill the unused area on the left of the output line; the head of the input line or sentence is used to fill the unused area on the right of the output line.

As a matter of convenience to the user, many usual backslashed escape sequences from the C language are recognized and converted to the corresponding characters by ptx itself.

`-W regexp'
`--word-regexp=regexp'

This option selects which regular expression will describe each keyword. By default, if GNU extensions are enabled, a word is a sequence of letters; the regexp used is `\w+'. When GNU extensions are disabled, a word is by default anything which ends with a space, a tab or a newline; the regexp used is `[^ \t\n]+'.

An empty regexp is equivalent to not using this option. See section `Syntax of Regular Expressions' in The GNU Emacs Manual.

As a matter of convenience to the user, many usual backslashed escape sequences, as found in the C language, are recognized and converted to the corresponding characters by ptx itself.


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

7.6.4 Output formatting

Output format is mainly controlled by the `-O' and `-T' options described in the table below. When neither `-O' nor `-T' are selected, and if GNU extensions are enabled, the program chooses an output format suitable for a dumb terminal. Each keyword occurrence is output to the center of one line, surrounded by its left and right contexts. Each field is properly justified, so the concordance output can be readily observed. As a special feature, if automatic references are selected by option `-A' and are output before the left context, that is, if option `-R' is not selected, then a colon is added after the reference; this nicely interfaces with GNU Emacs next-error processing. In this default output format, each white space character, like newline and tab, is merely changed to exactly one space, with no special attempt to compress consecutive spaces. This might change in the future. Except for those white space characters, every other character of the underlying set of 256 characters is transmitted verbatim.

Output format is further controlled by the following options.

`-g number'
`--gap-size=number'

Select the size of the minimum white space gap between the fields on the output line.

`-w number'
`--width=number'

Select the maximum output width of each final line. If references are used, they are included or excluded from the maximum output width depending on the value of option `-R'. If this option is not selected, that is, when references are output before the left context, the maximum output width takes into account the maximum length of all references. If this option is selected, that is, when references are output after the right context, the maximum output width does not take into account the space taken by references, nor the gap that precedes them.

`-A'
`--auto-reference'

Select automatic references. Each input line will have an automatic reference made up of the file name and the line ordinal, with a single colon between them. However, the file name will be empty when standard input is being read. If both `-A' and `-r' are selected, then the input reference is still read and skipped, but the automatic reference is used at output time, overriding the input reference.

`-R'
`--right-side-refs'

In the default output format, when option `-R' is not used, any references produced by the effect of options `-r' or `-A' are placed to the far right of output lines, after the right context. With default output format, when the `-R' option is specified, references are rather placed at the beginning of each output line, before the left context. For any other output format, option `-R' is ignored, with one exception: with `-R' the width of references is not taken into account in total output width given by `-w'.

This option is automatically selected whenever GNU extensions are disabled.

`-F string'
`--flac-truncation=string'

This option will request that any truncation in the output be reported using the string string. Most output fields theoretically extend towards the beginning or the end of the current line, or current sentence, as selected with option `-S'. But there is a maximum allowed output line width, changeable through option `-w', which is further divided into space for various output fields. When a field has to be truncated because it cannot extend beyond the beginning or the end of the current line to fit in, then a truncation occurs. By default, the string used is a single slash, as in `-F /'.

string may have more than one character, as in `-F ...'. Also, in the particular case when string is empty (`-F ""'), truncation flagging is disabled, and no truncation marks are appended in this case.

As a matter of convenience to the user, many usual backslashed escape sequences, as found in the C language, are recognized and converted to the corresponding characters by ptx itself.

`-M string'
`--macro-name=string'

Select another string to be used instead of `xx', while generating output suitable for nroff, troff or TeX.

`-O'
`--format=roff'

Choose an output format suitable for nroff or troff processing. Each output line will look like:

 
.xx "tail" "before" "keyword_and_after" "head" "ref"

so it will be possible to write a `.xx' roff macro to take care of the output typesetting. This is the default output format when GNU extensions are disabled. Option `-M' can be used to change `xx' to another macro name.

In this output format, each non-graphical character, like newline and tab, is merely changed to exactly one space, with no special attempt to compress consecutive spaces. Each quote character: " is doubled so it will be correctly processed by nroff or troff.

`-T'
`--format=tex'

Choose an output format suitable for TeX processing. Each output line will look like:

 
\xx {tail}{before}{keyword}{after}{head}{ref}

so it will be possible to write a \xx definition to take care of the output typesetting. Note that when references are not being produced, that is, neither option `-A' nor option `-r' is selected, the last parameter of each \xx call is inhibited. Option `-M' can be used to change `xx' to another macro name.

In this output format, some special characters, like $, %, &, # and _ are automatically protected with a backslash. Curly brackets {, } are protected with a backslash and a pair of dollar signs (to force mathematical mode). The backslash itself produces the sequence \backslash{}. Circumflex and tilde diacritical marks produce the sequence ^\{ } and ~\{ } respectively. Other diacriticized characters of the underlying character set produce an appropriate TeX sequence as far as possible. The other non-graphical characters, like newline and tab, and all other characters which are not part of ASCII, are merely changed to exactly one space, with no special attempt to compress consecutive spaces. Let me know how to improve this special character processing for TeX.


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

7.6.5 The GNU extensions to ptx

This version of ptx contains a few features which do not exist in System V ptx. These extra features are suppressed by using the `-G' command line option, unless overridden by other command line options. Some GNU extensions cannot be recovered by overriding, so the simple rule is to avoid `-G' if you care about GNU extensions. Here are the differences between this program and System V ptx.


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

This document was generated by Jeff Bailey on December, 28 2002 using texi2html