2013-05-03 27 views
0

我檢查線如果由AWK讀取當前行包含一些串針對我使用:需要搜索含有特定字符串模式

if (/.*abc.*lab.*/) 
{ 
} 

但如果該行中的字符串是例如

[abc ls:lab=123 ....].. 

然後該字符串被正確搜索,但是如果該行包含例如

[abc ls:key=xyz xyz. ls:lab=123 ...].. 

那麼線不搜索,即使它匹配.*abc.*lab.*

可有人請糾正我,如果我做了一些錯誤,而搜索?

+0

難道你試圖澄清你所說的「如果在該行的字符串如」的意思。 。「然後字符串被正確搜索,但是如果該行包含例如」..「那麼該行即使匹配也不被搜索。* abc.lab。」? – maaachine 2013-05-03 04:19:40

+0

這是什麼外殼?它與我見過的任何shell語法都不匹配...... – michaelb958 2013-05-03 04:23:59

+0

你指定的輸入字段分隔符('FS')是什麼? – devnull 2013-05-03 04:35:51

回答

1

您應該能夠使用:

awk '/abc.*lab/ { print $0 }' 

該模式對$0,整條生產線相匹配。不過,你所寫的也應該工作,如果寫成:

awk '{if (/.*abc.*lab.*/) print $0}' 

或用簡單的正則表達式:

awk '{if (/abc.*lab/) print $0}' 

如果沒有{ ... }if,那麼你已經有了語法問題與awk

如果有一個數據文件是這樣的:

[abc ls:lab=123 ....].. 
then the string is searched correctly, but if the line contains e.g. 

[abc ls:key=xyz xyz. ls:lab=123 ...].. 

上述所有的產品的腳本:

[abc ls:lab=123 ....].. 
[abc ls:key=xyz xyz. ls:lab=123 ...]..