Linux 打印bash中变量的最后第二行
我正在打印最后一行的第二行。一个班轮 到目前为止,我已经做到了:Linux 打印bash中变量的最后第二行,linux,bash,macos,printf,Linux,Bash,Macos,Printf,我正在打印最后一行的第二行。一个班轮 到目前为止,我已经做到了:printf--“$VAR”| head-2 然而,它打印出来的内容太多了 我可以用一个文件来做这件事。没问题:tail-2~/file | head-1你几乎自己完成了这项任务。试一试 VAR="1\n2\n3" 你几乎一个人完成了这项任务。试一试 VAR="1\n2\n3" 下面是一种纯粹的bash方法: VAR="1\n2\n3"; printf -- "$VAR"|tail -2|head -1 您也可以将此awk用
printf--“$VAR”| head-2
然而,它打印出来的内容太多了
我可以用一个文件来做这件事。没问题:
tail-2~/file | head-1
你几乎自己完成了这项任务。试一试
VAR="1\n2\n3"
你几乎一个人完成了这项任务。试一试
VAR="1\n2\n3"
下面是一种纯粹的bash方法:
VAR="1\n2\n3"; printf -- "$VAR"|tail -2|head -1
您也可以将此
awk
用作单个命令:
2
下面是一种纯粹的bash方法:
VAR="1\n2\n3"; printf -- "$VAR"|tail -2|head -1
您也可以将此
awk
用作单个命令:
2
使用
echo-e
进行反斜杠解释,将\n
转换为换行符,并使用NR
打印感兴趣的行号
2
对于多行和do,tail
和head
可用于打印任何特定行号
$ echo -e "${VAR}" | awk 'NR==2'
2
或者执行一个奇特的sed
,将前一行保留在缓冲区空间(x
)中打印,并一直删除到最后一行
$ echo -e "$VAR" | tail -2 | head -1
2
使用
echo-e
进行反斜杠解释,将\n
转换为换行符,并使用NR
打印感兴趣的行号
2
对于多行和do,tail
和head
可用于打印任何特定行号
$ echo -e "${VAR}" | awk 'NR==2'
2
或者执行一个奇特的sed
,将前一行保留在缓冲区空间(x
)中打印,并一直删除到最后一行
$ echo -e "$VAR" | tail -2 | head -1
2
使用临时变量和扩展可能更有效
$ echo -e "$VAR" | sed 'x;$!d'
2
使用临时变量和扩展可能更有效
$ echo -e "$VAR" | sed 'x;$!d'
2
我本来打算发布这个,但是
NR==2
意味着第二条记录不一定是输入中的倒数第二条。@anubhava是的,你是对的。我添加了一个tail | head
命令。它很难看:-)我本来想发布这个,但是NR==2
表示第二条记录不一定是输入中的倒数第二条。@anubhava是的,你是对的。我添加了一个tail | head
命令。很难看:-)