簡體   English   中英

在 shell 中使用 cut 提取最后一個單詞

[英]Use cut in shell to extract last word

我正在使用紅帽 linux。

我有一個文件foo.txt讀取

Hello world I am foo

當我做cat時,我想得到最后一個詞是foo

我嘗試在這里看到一些解釋使用 cut 命令的帖子,但它非常令人困惑。 有人可以幫我解決這個問題嗎?

我正在尋找一個類似於 go 的命令

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提取單個字符。

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

一個簡單的方法是使用awk

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

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

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

如果需要使用cat ,您可以嘗試以下操作:

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

解釋:
catfoo.txt文件的 pipe 內容傳遞給rev命令。 因此, rev將收到:

Hello world I am foo

並將其反轉:

oof ma I dlrow olleH

然后cut eill 提取倒置字符串的第一個單詞:

oof

這里-d ' '表示空格字符是用於將字符串拆分為多個字段的分隔符,而-f 1表示您正在獲取第一個字段。

最后,再次使用rev再次反轉提取的單詞,所以你會得到:

foo

GNU grep 使用 PCRE 獲取行中最后一個空格之后的字符(如果沒有空格,則在行首之后):

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM