Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
119 changes: 22 additions & 97 deletions src/uu/cut/locales/en-US.ftl
Original file line number Diff line number Diff line change
@@ -1,108 +1,33 @@
cut-about = Prints specified byte or field columns from each line of stdin or the input files
cut-about = Extract sections from each line of files.
cut-usage = cut OPTION... [FILE]...
cut-after-help = Each call must specify a mode (what to use for columns),
a sequence (which columns to print), and provide a data source
cut-after-help = If no FILE is specified, reads from stdin. Use '-' as a FILE argument to include stdin.

Specifying a mode:
LIST is a comma-separated list of numbers or ranges:

Use --bytes (-b) or --characters (-c) to specify byte mode
N only column N
N- columns N through the end of the line
N-M columns N through M
-M columns 1 through M

Use --fields (-f) to specify field mode, where each line is broken into
fields identified by a delimiter character. For example for a typical CSV
you could use this in combination with setting comma as the delimiter
Examples:

Specifying a sequence:

A sequence is a group of 1 or more numbers or inclusive ranges separated
by a commas.

cut -f 2,5-7 some_file.txt

will display the 2nd, 5th, 6th, and 7th field for each source line

Ranges can extend to the end of the row by excluding the second number

cut -f 3- some_file.txt

will display the 3rd field and all fields after for each source line

The first number of a range can be excluded, and this is effectively the
same as using 1 as the first number: it causes the range to begin at the
first column. Ranges can also display a single column

cut -f 1,3-5 some_file.txt

will display the 1st, 3rd, 4th, and 5th field for each source line

The --complement option, when used, inverts the effect of the sequence

cut --complement -f 4-6 some_file.txt

will display the every field but the 4th, 5th, and 6th

Specifying a data source:

If no sourcefile arguments are specified, stdin is used as the source of
lines to print

If sourcefile arguments are specified, stdin is ignored and all files are
read in consecutively if a sourcefile is not successfully read, a warning
will print to stderr, and the eventual status code will be 1, but cut
will continue to read through proceeding sourcefiles

To print columns from both STDIN and a file argument, use - (dash) as a
sourcefile argument to represent stdin.

Field mode options:

The fields in each line are identified by a delimiter (separator)

Set the delimiter:

Set the delimiter which separates fields in the file using the
--delimiter (-d) option. Setting the delimiter is optional.
If not set, a default delimiter of Tab will be used.

If the -w option is provided, fields will be separated by any number
of whitespace characters (Space and Tab). The output delimiter will
be a Tab unless explicitly specified. Only one of -d or -w option can be specified.
This is an extension adopted from FreeBSD.

Optionally filter based on delimiter:

If the --only-delimited (-s) flag is provided, only lines which
contain the delimiter will be printed

Replace the delimiter:

If the --output-delimiter option is provided, the argument used for
it will replace the delimiter character in each line printed. This is
useful for transforming tabular data - e.g. to convert a CSV to a
TSV (tab-separated file)

Line endings:

When the --zero-terminated (-z) option is used, cut sees \\0 (null) as the
'line ending' character (both for the purposes of reading lines and
separating printed lines) instead of \\n (newline). This is useful for
tabular data where some of the cells may contain newlines

echo 'ab\\0cd' | cut -z -c 1

will result in 'a\\0c\\0'
cut -f 2,5-7 file.txt extract fields 2, 5, 6, and 7
cut -f 3- file.txt extract field 3 to the end of the line
cut --complement -f 4-6 file.txt extract all fields except 4, 5, and 6
cut -d',' -f1 file.csv extract first field from a CSV

# Help messages
cut-help-bytes = filter byte columns from the input source
cut-help-characters = alias for character mode
cut-help-delimiter = specify the delimiter character that separates fields in the input source. Defaults to Tab.
cut-help-whitespace-delimited = Use any number of whitespace (Space, Tab) to separate fields in the input source (FreeBSD extension).
cut-help-fields = filter field columns from the input source
cut-help-bytes = extract bytes listed in LIST
cut-help-characters = extract characters listed in LIST
cut-help-delimiter = use DELIM as field separator (default: Tab)
cut-help-whitespace-delimited = use any whitespace (Space/Tab) as delimiter; ignore leading and trailing blanks with 'trimmed'
cut-help-fields = extract fields listed in LIST
cut-help-fields-merged = like -f, but merge adjacent delimiters; the delimiter defaults to whitespace and the output delimiter to a space
cut-help-complement = invert the filter - instead of displaying only the filtered columns, display all but those columns
cut-help-only-delimited = in field mode, only print lines which contain the delimiter
cut-help-zero-terminated = instead of filtering columns based on line, filter columns based on \\0 (NULL character)
cut-help-output-delimiter = in field mode, replace the delimiter in output lines with this option's argument
cut-help-no-partial = with -b, don't output partial multi-byte characters
cut-help-complement = invert selection: print all columns except the specified ones
cut-help-only-delimited = suppress lines that do not contain the delimiter
cut-help-zero-terminated = use NULL (\0) instead of newline as line terminator
cut-help-output-delimiter = replace input delimiter with NEW_DELIM in output
cut-help-no-partial = with -b, do not output partial multi-byte characters

# Error messages
cut-error-is-directory = Is a directory
Expand Down
10 changes: 0 additions & 10 deletions tests/by-util/test_cut.rs
Original file line number Diff line number Diff line change
Expand Up @@ -55,16 +55,6 @@ fn test_invalid_arg() {
new_ucmd!().arg("--definitely-invalid").fails_with_code(1);
}

#[test]
fn test_help_uses_plain_text_headings() {
new_ucmd!()
.arg("--help")
.succeeds()
.stdout_contains("\nSpecifying a mode:\n")
.stdout_contains("\nSet the delimiter:\n")
.stdout_does_not_contain("###");
}

#[test]
fn test_range_error_messages() {
// Mode-aware diagnostics for invalid ranges.
Expand Down
Loading