2015-05-20 67 views
-1

我想從使用shell腳本匹配模式的文本文件中提取單詞。例如,如果一個行包含從文本文件中剪切匹配模式的特定單詞

This is a sample text to illustrate my scenario text=info id=2342 
Second line to illustrate text=sample id=q2312 

我要輸出到像

text=info id=2342 
text=sample id=q2312 

能有人爲請告訴我,我如何使用剪切/ grep命令實現呢?

回答

3

你可以做到以下幾點:

grep -P -o 'text=\S+ id=\S+'

-P標誌grep使Perl的正則表達式。 \S+將匹配所有非空白字符,-o只輸出匹配的部分。

假設您需要獲取字段「text」和「id」值。根據需要修改正則表達式。 Perl的正則表達式見here或擴展正則表達式見man grep

2

grep -oP應該工作:

grep -oP '\b(\w+=\w+(\s+|$))+' file 
text=info id=2342 
text=sample id=q2312 
+0

你好anubhava,這似乎是爲什麼mrezzaaa問。但是,您能否對grep中使用的reg-ex進行一點說明。 –

+1

'\ w +'匹配一個單詞,其中'\ b'是單詞邊界。 '\ w + = \ w +'匹配由'='分隔的2個單詞,後面跟着'(\ s + | $)',其中1+空格或行尾。 '(\ w + = \ w +(\ s + | $))+'會匹配多個由空格分隔的'name = value'對。 – anubhava

1

隨着切,你需要處理額外的(從首次降息=,並添加文本=):

echo "text=$(echo "This is a sample text to illustrate my scenario text=info id=2342" | cut -d= -f2-)" 

使用sed:

echo "This is a sample text to illustrate my scenario text=info id=2342" | sed 's/.* text=/text=/'