使用 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)}'
NF
是 number of fields in the current record.
所以 $(NF)
将是硬道理。
如果需要使用cat
,你可以试试这个:
cat foo.txt | rev | cut -d ' ' -f 1 | rev
解释:
cat
将 foo.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
我正在使用红帽 linux。
我有一个文件foo.txt
,上面写着
Hello world I am foo
我想在 cat
我试着在这里看到一些解释使用 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)}'
NF
是 number of fields in the current record.
所以 $(NF)
将是硬道理。
如果需要使用cat
,你可以试试这个:
cat foo.txt | rev | cut -d ' ' -f 1 | rev
解释:
cat
将 foo.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