2013-02-11 85 views
1

我希望到grep一个文件,并提取该行提取文本使用awk

#define SIM_VERSION_COMPAT 1302 

使用awk的第三部分。所以我写道:

grep "#define SIM_VERSION_COMPAT" global.h | awk '{ print $$3 }' 

结果应该是1302,但我什么也没得到(空白)。

+2

从awk的语法删除额外的$ – Satish 2013-02-11 15:47:24

回答

3

无需使用grep和管道可以用awk这样的:

awk '/#define SIM_VERSION_COMPAT/{print $3}' global.h 
+0

看到这个在这里工作:http://ideone.com/TT7Iac – anubhava 2013-02-11 15:51:04

1

只需使用grep

$ grep -Po '(?<=#define SIM_VERSION_COMPAT)[0-9]+' global.h 
1302 

这使用positive lookbehind匹配含有#define SIM_VERSION_COMPAT线,但只打印数字串以下。

+0

令人印象深刻!感谢您的链接,我正在阅读/改进;-) – olibre 2013-02-11 16:24:50

+0

@olibre我的坏我假设你是OP没有检查':|'很高兴知道我的回答对别人也有帮助。 – 2013-02-12 08:30:16

1

您也可以使用剪切命令以及

grep "#define SIM_VERSION_COMPAT" temp.txt | cut -d" " -f 3