使用 cut in shell 提取最后一个词

Use cut in shell to extract last word

我正在使用红帽 linux。

我有一个文件foo.txt,上面写着

Hello world I am foo

我想在 cat

时得到最后一个词 foo

我试着在这里看到一些解释使用 cut 命令的帖子,但它非常混乱。 有人可以帮我解决这个问题吗?

我正在寻找一个可能像下面这样的命令

cat foo.txt | cut <the options to get the last word /or last 3 characters>

cut不能从右边算起。但是你可以使用 rev 来反转每一行,而不是正常地从左边开始计数,然后将行反转。还是出奇的快。

rev foo.txt | cut -d' ' -f1 | rev
  • -d 指定分隔符,我猜你在统计单词时需要空格
  • -f 指定要提取的字段。使用 -c 提取单个字符。

使用 -n [行数] 可以限制行数。 使用 -c 限制字符数

正如@choroba 提到的那样,cut 不能那样做。

一个简单的方法是使用 awk.

cat foo.txt | awk '{print $(NF)}'

NFnumber of fields in the current record. 所以 $(NF) 将是硬道理。

如果需要使用cat,你可以试试这个:

cat foo.txt | rev | cut -d ' ' -f 1 | rev

解释:
catfoo.txt 文件的内容通过管道传递给 rev 命令。 因此,rev 将收到:

Hello world I am foo

并将其反转:

oof ma I dlrow olleH

然后cut提取倒排字符串的第一个词:

oof

此处-d ' '表示space字符是分隔符,用于将您的字符串分成几个字段,-f 1表示您正在使用第一个字段。

最后再次使用rev将提取出来的单词再次反转,所以你会得到:

foo

GNU grep 使用 PCRE 获取行中最后一个空格之后的字符(如果没有空格,则获取行开头之后的字符):

grep -oP '(.*\s|^)\K.+' file