The term "field" is often times associated with tools such as cut
and awk
. A field would be similar to a columns worth of data, if you take the data and separate it using a specific character. Typically the character used to do this is a Space.
However as is the case with most tools, it's configurable. For example:
- awk =
awk -F"," ...
- would separate by commas (i.e. ,).
- cut =
cut -d"," ...
- would separate by commas (i.e. ,).
Examples
This first one shows how awk
automatically will split on spaces.
$ echo "The rain in Spain." | awk '{print $1" "$4}'
The Spain.
This one shows how cut
will split on spaces too.
$ echo "The rain in Spain." | cut -d" " -f1,4
The Spain.
Here we have a CSV list of column data that we're using cut
to return columns 1 & 4.
$ echo "col1,col2,col3,co4" | cut -d"," -f1,4
col1,co4
Awk too can do this:
$ echo "col1,col2,col3,co4" | awk -F"," '{print $1","$4}'
col1,co4
Awk is also a little more adept at dealing with a variety of separation characters. Here it's dealing with Tabs along with Spaces where they're inter-mixed at the same time:
$ echo -e "The\t rain\t\t in Spain." | awk '{print $1" "$4}'
The Spain.
What about the -s switch to cut?
With respect to this switch, it's simply telling cut
to not print any lines which do not contain the delimiter character specified via the -d
switch.
Example
Say we had this file.
$ cat sample.txt
This is a space string.
This is a space and tab string.
Thisstringcontainsneither.
NOTE: There are spaces and tabs in the 2nd string above.
Now when we process these strings using cut
with and without the -s
switch:
$ cut -d" " -f1-6 sample.txt
This is a space string.
This is a space
Thisstringcontainsneither.
$ cut -d" " -f1-6 -s sample.txt
This is a space string.
This is a space
In the 2nd example you can see that the -s
switch has omitted any strings from the output that do not contain the delimiter, Space.
Best Answer
Reverse the input before and after
cut
withrev
:Output: