2014-03-04 74 views
0

我有讀這樣的文字:替換文本中所有單詞由Unix,但Linux和空格

Linux提供了強大的管理工具和實用程序,這將幫助你有效地管理您的系統。如果您不知道這些工具是什麼以及如何使用這些工具,那麼您可能花費大量時間嘗試執行基本的管理任務。本課程的重點是幫助您理解系統管理工具,這將有助於您成爲一名有效的Linux系統管理員。 立即獲取Linux系統管理員課程!

我想使用sed工具替換文字中除Unix和whitespaces之外的所有單詞。有任何想法嗎?我試過這個:

sed -e 's/[^linux]/linux/g' -e 's/[[:space:]]/[[:space:]]/g' 

但它只是輸出unix沒有空格。

回答

0

「一切都好」通常很難用正則表達式。你可以通過3步來完成,首先將Linux改成一個特殊的獨特字符,然後把所有的單詞改爲Unix,然後把魔術字符改回到Linux。

sed -r -e 's/Linux/@/g' -e 's/[^ @,;\.]+/Unix/g' -e 's/@/Linux/g' 

上面還保留了標點符號。

[...]總是定義一個字符類,因此它匹配一個SINGLE字符。所以[^linux]不是非linux的單詞,而是單個字符,它不是l,i,n,ux

相關問題