給出了使用的sed:刪除開頭寫着「_」在文件中的bash
this is a_REMOVEME test_REMOVEME for the win
我想:
this is a test for the win
我現在有似乎什麼不應該做的伎倆它僅刪除_
:
sed -e 's/_\w*//g' myfile.txt
給出了使用的sed:刪除開頭寫着「_」在文件中的bash
this is a_REMOVEME test_REMOVEME for the win
我想:
this is a test for the win
我現在有似乎什麼不應該做的伎倆它僅刪除_
:
sed -e 's/_\w*//g' myfile.txt
試試這個
sed -ie 's/_[A-Za-z0-9]*//g' here.txt
\w
可能不受您的sed
版本可以理解默認。請嘗試使用\w
來代替[A-Za-z0-9]
或[^ ]
以匹配任何非空格字符。您可能還想嘗試sed -re
以啓用擴展正則表達式支持。
或使用'[[:alnum:]] * ' –
'-r'可以在Linux上運行,但不適用於OSX,即使它在OSX上幾乎相當於'-E',也不會在這裏工作,因爲OSX sed(至少從OS X 10.9.1開始)從不支持快捷方式字符類,如'\ w'(這將需要所謂的_enhanced_正則表達式特徵 - 與_extended_正則表達式分開的維度 - 很遺憾,大多數OSX工具都不支持)。 ''[[:alnum:] _]'代替'\ w'是你的朋友。 @glennjackman:雖然'[[:alnum:]]'在這裏完全夠用,我想指出'\ w'的確切等價物是'[[:alnum:] _]'。 – mklement0
@ mklement0噢,我建議'-r'不是爲了解決原始問題,而是因爲我不記得'['是否需要轉義。我不希望OP嘗試我的解決方案,甚至更困惑......我想我搞砸了! – dg99
這很有趣,如果你做的是使用命令行的perl ...這將工作:
$ echo "this is a_REMOVEME test_REMOVEME for the win" | perl -pe 's/_\w*//g'
this is a test for the win
請注意,如果要刪除的模式後面沒有空格,這將無法完全工作:'echo「foo_bar baz_qux」| sed's/_ [A-Za-z0-9] *// g''。我會這樣寫:'sed's/_ [[:alnum:]] * \([[:blank:]] \ | $ \)/ \ 1/g'' –