如何找到文件中的最后一个单词,即使在单词之后有空行
案子
我尝试这个来找到最后一个词
tail -1 /tmp/requests.txt
但没有输出
我尝试以下方法
awk 'END {print $NF}' /tmp/requests.txt
但没有输出
我只捕捉这个词尾-6(因为该单词在文件末尾之前有 6 个空行
tail -6 /tmp/requests.txt
"IN_PROGRESS"
那么如果我们有空格或没有空格,如何捕获最后一个单词
预期成绩
echo $Last_word
IN_PROGRESS
答案1
只需从底部开始阅读并打印至少包含“某事”的第一行的最后一个单词:
tac file | awk 'NF{print $NF; exit}'
例如:
$ cat -vet file # note the spaces and tabs
hello$
bla ble bli$
$
^I$
$ tac file | awk 'NF{print $NF; exit}'
bli
如果你碰巧没有tac
,只需使用正常读取文件时相同的逻辑即可:
awk 'NF{last=$NF} END{print last}' file
也就是说,只要一行中有“某物”,就存储最后一个单词。最后,打印存储的值。
答案2
跟踪最后一个非空行的最后一个单词并在末尾打印它:
awk '/\S/{ s=$NF; } END{ print(s); }'
无需将整个文件保留在内存中以相反的顺序打印其行或类似的内容。
答案3
sed -n '$p' example.txt | awk '{print $NF}'
这将获取文件的最后一行并显示最后一行的最后一列。