2013-02-27 56 views
1

我想在這樣的線到grep個別數量:如何通過sed提取這些字段?

foo=24.587 bar=88 fox=jobs 

和提取,也就是說,所有的「88」 values..the列數並不一致那麼AWK接着是切不會削減它。

我試着用的sed是這樣的:

sed -e 's/.*\s\(bar=.+\)\s.*/\1/g' 

和剛剛轉儲整條生產線。我不知道如何糾正這個正則表達式,更重要的是爲什麼這個正則表達式不符合我的期望?

+0

你想匹配'bar = 88'還是'= 88'並且你需要每行有多個可能的匹配? – Scrutinizer 2013-02-27 13:17:58

回答

1

使用-r(擴展正則表達式)。這往往會更像你所期望的那樣使用regexen。但你必須去除反斜線:

$ echo "foo=24.587 bar=88 fox=jobs" | sed -r 's/.*\s(bar=.+)\s.*/\1/g' 
bar=88 
+0

酷!有趣的是,如果我這樣做: echo「tau = 39.05 dos = 200 iv = 2 bar = 39.05 foo = 39.06 fox = jobs」| sed -r's /.* \ s(bar =。+)\ s。*/\ 1/g'我得到了bar和foo! – 2013-02-27 01:30:43

+0

@PalaceChan使用's /.* \ s(bar = [^] +)\ s。*/\ 1/g''。不幸的是,'sed'不允許我不情願的量詞 – 2013-02-27 01:33:25

+0

,我看到,trixy trixy。謝謝 – 2013-02-27 01:40:29