这是使用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 ++人。
由于
答案 0 :(得分:0)
您可以使用此sed
命令:
sed -n '/define *REV_NUMBER/{\~^ *//~!p;}' file
define REV_NUMBER
答案 1 :(得分:0)
通过管道连接的三个grep
不会更具可读性吗?
grep -v "//" $FILE | grep "define" | grep "REV_NUMBER"