我正在尝试执行一条给出多行的命令;例如ldapwhoami
,我想在bash脚本中创建它,该脚本仅显示最后一行而不是所有命令行。
我尝试了以下
#/bin/bash
$(ldapwhoami | sed 1d2d3d)
但是它似乎不起作用,任何帮助将不胜感激。
答案 0 :(得分:3)
要仅打印最后一行,请使用tail
:
ldapwhoami | tail -n 1
要使用sed
删除前三行,请将命令更改为:
ldapwhoami | sed '1d;2d;3d;'
注意分号和引号
awk
ldapwhoami | awk 'NR > 3'
以上假设所有输出均进入标准输出。在unix中,尽管每个进程都有两个输出流,但标准输出(用1表示-用于程序的输出)和标准错误(用2表示-用于任何诊断/错误消息)。这种分离的原因是,通常希望不要用诊断消息来“污染”输出,如果输出是由另一个脚本处理的。
因此,对于同时产生两个输出的命令,如果要捕获两个输出,则可以使用2>&1
)将标准错误重定向到标准输出,如下所示:
ldapwhoami 2>&1 | tail -n 1
(对于awk和sed使用相同的语法)
在bash中,以上内容可以使用速记形式写为
ldapwhoami |& tail -n 1
如果您只需要标准输出,而不必担心标准错误,则可以将其重定向到/dev/null
ldapwhoami 2> /dev/null