以下是使用Perl实现此目的的一种方法:
perl -ne '$s = $_ if /\n$/ }{ print $s' file
Run Code Online (Sandbox Code Playgroud)
该脚本逐个读取文件的每一行,$s如果结束,则将其分配给变量\n.一旦读取了文件,$s就会打印出来.如果最后一行没有以换行符结束,那么将打印倒数第二行,如下所示:
$ cat file
first line
second
third$ perl -ne '$s = $_ if /\n$/ }{ print $s' file
second
Run Code Online (Sandbox Code Playgroud)
请注意,$由于缺少换行符,我故意留在显示提示的位置,该提示位于文件最后一行的末尾.
cat -vte file|grep "\$$"|tail -1
Run Code Online (Sandbox Code Playgroud)
那这个呢?或者用cat -vte的其他方式
这样额外的$将被删除:
echo -en "Enter\nEnter again\nNo enter this time"|cat -vte|grep "\$$"|sed 's/\$$//g'|tail -1
Run Code Online (Sandbox Code Playgroud)
适用于linux的+1变体(Perl regexp,正向前瞻断言,仅显示匹配部分):
echo -en "Enter\nEnter again\nNo enter this time"|cat -vte|grep -Po ".*(?=\\\$$)"|tail -1
Run Code Online (Sandbox Code Playgroud)