2015-11-02 16 views
0

我似乎無法得到正確的語法: 我想grep來算,其與「0」開頭的行,幷包含在變量「短語」如何grep一個包含變量的模式?

我試過了一句:

cut -f1,5 file.txt|grep -c 0*${phrase}* 

(切割正在進行,因爲它不是問題的一部分),但它不起作用。我究竟做錯了什麼?

+0

'| | fgrep「$ {phrase}」 – bobah

+0

@bobah忽略字符串開始時所需的0。 – chepner

回答

4

0*是「零個或多個0」,不一定在字符串的開始。

grep -c "^0.*${phrase}" 

您可以使用.*指示零個或多個字符。另外請記住,如果$phrase具有正則表達式元字符,您將遇到可能遇到的問題。

+0

非常感謝,它做到了! 爲什麼^ 0的意思是「從零開始」?不被用於否定? – shayelk

+0

@shayelk'^'僅用於字符類內部的否定,即'[^ 0]'。否則,它是字符串/行開頭的錨點。 –

2

正確的調用是

... | grep -c "^0.*$phrase" 

整個事情必須被引用,以防止某些字符的外殼解釋,如*.*匹配行的開始處的0和任何$phrase匹配的0或更多任意字符。

相關問題