2013-10-20 32 views
0

我正在尋找一個grep表達式,它可以讓我檢查標點符號之前是否有空格或開始行;我想確保標點符號一致。我有什麼是這個(爲簡單起見,我在這個例子中取代[\.,;:\!?]只需,):grep表達式匹配空格或開始行

~ > echo -e "some, text\nsome ,text\n,some text" | grep " ," 
2:some ,text 

這是確定的,但忽略了第三種情況。我試過[^ ],"(^\|),",但都沒有工作。這裏有什麼正確的表達?

回答

1

這是什麼工作。我不認爲你可以假設-P選項可用(它不在默認的OSX grep中)。但grep的-E可以讓你避免逃避過:

echo -e "some, text\nsome ,text\n,some text" | grep -E "(|^)," 
+0

謝謝,-E很好地工作(所以做mohit6up的答案,因爲我使用MacPorts)。 – Jens

0

使用regexperl風味積極向後看斷言嘗試:

echo -e "some, text\nsome ,text\n,some text" | grep -P '(?<=\s|^),' 

國債收益率:

some ,text 
,some text 
+0

這樣的作品,雖然上面'-E'選擇是一個簡單的解決方案。謝謝:) – Jens

1

這應該工作: echo -e "some, text\nsome ,text\n,some text" | grep -P "(|^),"

-P會將其解釋爲一個類似Perl的正則表達式,可以防止不必要的字符轉義。

相關問題