![](/img/trans.png)
[英]Using bash (bash awk, sed) read a file and extract word matching prefix between quotes
[英]Extract last word of a file in bash/sed/awk
我想在bash / sed / awk中提取文件的最后一個單詞a.txt
。
我該怎么做?
要獲得最后一行中的最后一個字:
awk 'END {print $NF}' file
更新。
如果你想使用awk
並確保有一個單詞,請使用:
tac a.txt | awk 'NF{print $NF; exit}'
tac
反向打印文件。 {}
塊前面的NF
使得它在行不為空時起作用。 在這種情況下,它打印最后一個字段( NF
代表字段數,因此$NF
是最后一個字段),然后退出。
$ cat a
hello my name
is blabla
and this is
my comment.
<--- note an empty line
$ tac a | awk 'NF{print $NF; exit}'
comment.
awk '{w=NF?$NF:w} END{print w}' file
w=$NF?$NF:w
。 這是一個三元運算符:如果NF>0
(無空行),則將w
設置為最后一個字段。 否則,保持原樣。 最后,在END{}
,打印最后保存的單詞。
如果你想用sed
制作它,你可以使用它,以防萬一最后沒有空行:
sed -n '${s/.* //; p}' a.txt
$
代表文件的最后一行。 在那種情況下,做{}
。 s/.* //; p
s/.* //; p
將所有內容移除到最后一個空格。 然后打印p
。 嘗試這個awk命令,
awk -v RS="\0" '{print $NF}' file
RS="\\0"
將文件中的所有記錄轉換為單個記錄。 然后{print $NF}
打印該單條記錄的最后一個字段。
你也可以使用sed命令,
$sed -nr '${s/.* (.*)$/\1/pg}' File_name
使用tail和grep:
tail -1 myFile.txt | grep -oE '[^ ]+$'
你也可以用grep
和tail
得到最后一個單詞:
<a.txt grep -o '\w\+' | tail -n1
sed
變體支持空的最后一行(如果有的話):
sed -n '/[^ ]/h; ${g;s/ *$//; s/.* //p}' a.txt
這可能適合你(GNU sed):
sed -r '/\w/{s/.*\W(\w+)\W*$/\1/;h};$!d;x;/./!d' file
將當前行的最后一個單詞保存在保留空間中,然后刪除該行。 在文件的末尾,它檢索最后一個單詞並將其打印出來,除非沒有單詞,在這種情況下它會刪除空行。
另一種方法是將整個文件粘貼到內存中:
sed -r ':a;$!{N;ba};s/.*\W(\w+)\W*$/\1/p;d' file
sed -n '/^$/!{$ s/.* \(\w*\)$/\1/p}'
這將省略空行並在最后一個非空行上打印最后一個單詞。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.