2014-01-29 30 views

回答

2

試試這個

sed -ie 's/_[A-Za-z0-9]*//g' here.txt 
+0

請注意,如果要刪除的模式後面沒有空格,這將無法完全工作:'echo「foo_bar baz_qux」| sed's/_ [A-Za-z0-9] *// g''。我會這樣寫:'sed's/_ [[:alnum:]] * \([[:blank:]] \ | $ \)/ \ 1/g'' –

3

\w可能不受您的sed版本可以理解默認。請嘗試使用\w來代替[A-Za-z0-9][^ ]以匹配任何非空格字符。您可能還想嘗試sed -re以啓用擴展正則表達式支持。

+1

或使用'[[:alnum:]] * ' –

+0

'-r'可以在Linux上運行,但不適用於OSX,即使它在OSX上幾乎相當於'-E',也不會在這裏工作,因爲OSX sed(至少從OS X 10.9.1開始)從不支持快捷方式字符類,如'\ w'(這將需要所謂的_enhanced_正則表達式特徵 - 與_extended_正則表達式分開的維度 - 很遺憾,大多數OSX工具都不支持)。 ''[[:alnum:] _]'代替'\ w'是你的朋友。 @glennjackman:雖然'[[:alnum:]]'在這裏完全夠用,我想指出'\ w'的確切等價物是'[[:alnum:] _]'。 – mklement0

+0

@ mklement0噢,我建議'-r'不是爲了解決原始問題,而是因爲我不記得'['是否需要轉義。我不希望OP嘗試我的解決方案,甚至更困惑......我想我搞砸了! – dg99

0

這很有趣,如果你做的是使用命令行的perl ...這將工作:

$ echo "this is a_REMOVEME test_REMOVEME for the win" | perl -pe 's/_\w*//g' 

this is a test for the win