Bash 从shell输出中删除特定行
试图将Debian版本号放入变量中时,我遇到了一个问题,即通过grep对其进行过滤 如果我进行lsb_发布:Bash 从shell输出中删除特定行,bash,grep,Bash,Grep,试图将Debian版本号放入变量中时,我遇到了一个问题,即通过grep对其进行过滤 如果我进行lsb_发布: ~# lsb_release -a No LSB modules are available. Distributor ID: Debian Description: Debian GNU/Linux 7.1 (wheezy) Release: 7.1 Codename: wheezy 为了获得包含描述的行,我尝试: # lsb_release -a |
~# lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 7.1 (wheezy)
Release: 7.1
Codename: wheezy
为了获得包含描述的行,我尝试:
# lsb_release -a | grep -i 'Description'
No LSB modules are available.
Description: Debian GNU/Linux 7.1 (wheezy)
然而,我仍然得到一句话“没有可用的LSB模块。”
我试图通过以下方式明确排除它:
# lsb_release -a | grep -v 'LSB' | grep -i 'Description'
No LSB modules are available.
Description: Debian GNU/Linux 7.1 (wheezy)
我仍然得到包含字符串“LSB”的行。为什么会这样?如何单独获得所需的行?看来不需要的行是输出到stderr的,而不是stdout。如果不需要,请将其重定向到
/dev/null
。尝试:
lsb_release -a 2>/dev/null | grep -i 'Description'
将标准管连接至标准管,并使用
切割:
debian_version=$(lsb_release -a 2>&1 | grep 'Description' | cut -f2)
或者干脆扔掉错误消息:
debian_version=$(lsb_release -a 2>/dev/null | grep 'Description' | cut -f2)