使用sed查找具有特定关键字的行

时间:2015-06-03 22:14:47

标签: regex bash shell sed

这是使用CentOS的bash

我正在尝试使用sed扫描文本文件,以查找包含短语“define”和“REV_NUMBER”的行(之前,之间和之间的内容)之后没关系)。但是,我也想忽略其中包含“//”的行,因为它们表示注释(源文件是Verilog文件)。

我的代码如下:

REV=$(SED -n '/define REV_NUMBER/p' text.vh <<< $REV)
RESULT=$(echo "$REV")

这涵盖了包括以下内容的所有行:

define REV_NUMBER

但是我希望它包含有这样的行,比如说:

define              REV_NUMBER

或者单词之间有任意数量的空格。 但忽略具有

的行
//define REV_NUMBER
//define      REV_NUMBER
//    define REV_NUMBER

我难以实现这一目标。 bash / shell脚本和sed的新手。通常是使用字符串的C ++人。

由于

2 个答案:

答案 0 :(得分:0)

您可以使用此sed命令:

sed -n '/define  *REV_NUMBER/{\~^ *//~!p;}' file
define              REV_NUMBER

答案 1 :(得分:0)

通过管道连接的三个grep不会更具可读性吗?

grep -v "//" $FILE | grep "define" | grep "REV_NUMBER"