Without using sed
or awk
, only cut
, how do I get the last field when the number of fields are unknown or change with every line?
You can use the cut command just as awk command to extract the fields in a file using a delimiter.
“awk” is a very powerful Linux command that can be used with other commands as well as with other variables. This command is essentially used to read the content of a file.
You could try something like this:
echo 'maps.google.com' | rev | cut -d'.' -f 1 | rev
Explanation
rev
reverses "maps.google.com" to be moc.elgoog.spam
cut
uses dot (ie '.') as the delimiter, and chooses the first field, which is moc
com
Use a parameter expansion. This is much more efficient than any kind of external command, cut
(or grep
) included.
data=foo,bar,baz,qux last=${data##*,}
See BashFAQ #100 for an introduction to native string manipulation in bash.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With