Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 打印bash中变量的最后第二行_Linux_Bash_Macos_Printf - Fatal编程技术网

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
命令。很难看:-)