2014-03-04 33 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

相关问题