2016-12-03 56 views

回答

2

你想要的是:

echo "ze2s hihi" | tr ' ' '\n' | grep 'h.*' 

隨着「H *」你問匹配序列中的任何數量的H公司,包括0 H的,這ze2s匹配。

或者,也許你只是想匹配任何包含的H:

echo "ze2s hihi" | tr ' ' '\n' | grep 'h' 
+0

我用'h +'替換'h *'但它仍然不起作用 –

+0

這是因爲+是需要轉義'h \ +'或使用-E標誌的特殊符號之一:grep -E' h +' –

+0

s /特殊符號/ ERE元字符/。軟件中沒有什麼「特殊」(並且沒有什麼「新」)。 OP需要'grep'h。+''或'grep'h'',而不是'grep'h。*'',因爲它只會匹配與更簡潔的'grep'h''相同的字符串。 –

2

考慮使用egrepgrep -E如果你只是想有h*行開頭:

echo "ze2s hihi" | tr ' ' '\n' | egrep '^h' 
2

星號與前面的項目匹配零次或多次。因此h*匹配h或更多次,即任何。

如果要匹配h及其後的任何字符,請使用h.*表達式,其中句點與任何單個字符匹配。

1

你得到的回答你的問題,但僅供參考,你並不需要多個命令和管道做你想做什麼:

$ echo "ze2s hihi" | awk -v RS='\\s+' '/h/' 
hihi 

以上使用GNU AWK多焦RS和\s空間字符。