Bash 从shell输出中删除特定行

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 |

试图将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 | 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)