我希望到grep一個文件,並提取該行提取文本使用awk
#define SIM_VERSION_COMPAT 1302
使用awk的第三部分。所以我寫道:
grep "#define SIM_VERSION_COMPAT" global.h | awk '{ print $$3 }'
結果應該是1302,但我什麼也沒得到(空白)。
我希望到grep一個文件,並提取該行提取文本使用awk
#define SIM_VERSION_COMPAT 1302
使用awk的第三部分。所以我寫道:
grep "#define SIM_VERSION_COMPAT" global.h | awk '{ print $$3 }'
結果應該是1302,但我什麼也沒得到(空白)。
[[email protected] ~]$ echo "#define SIM_VERSION_COMPAT 1302" | awk '{ print $3 }'
1302
無需使用grep和管道可以用awk這樣的:
awk '/#define SIM_VERSION_COMPAT/{print $3}' global.h
看到這個在這裏工作:http://ideone.com/TT7Iac – anubhava 2013-02-11 15:51:04
只需使用grep
:
$ grep -Po '(?<=#define SIM_VERSION_COMPAT)[0-9]+' global.h
1302
這使用positive lookbehind匹配含有#define SIM_VERSION_COMPAT
線,但只打印數字串以下。
令人印象深刻!感謝您的鏈接,我正在閱讀/改進;-) – olibre 2013-02-11 16:24:50
@olibre我的壞我假設你是OP沒有檢查':|'很高興知道我的回答對別人也有幫助。 – 2013-02-12 08:30:16
您也可以使用剪切命令以及
grep "#define SIM_VERSION_COMPAT" temp.txt | cut -d" " -f 3
從awk的語法刪除額外的$ – Satish 2013-02-11 15:47:24