用Unix替换文本中的所有单词,但用Linux和空格替换

时间:2014-03-04 20:58:49

标签: linux sed

我的文字如下:

  

Linux提供了几种功能强大的管理工具和实用程序,可帮助您有效地管理系统。如果您不知道这些工具是什么以及如何使用它们,您可能会花费大量时间尝试执行基本的管理任务。本课程的重点是帮助您了解系统管理工具,这将有助于您成为有效的Linux系统管理员。   立即获取Linux Sysadmin课程!

我想用Unix和sed工具替换所有单词,除了Linux和文本中的空格。有任何想法吗?我试过这个:

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

但它只输出unix没有空格。

1 个答案:

答案 0 :(得分:0)

“Everything BUT”通常很难用正则表达式。您可以分三步完成,首先将Linux更改为一个特殊的唯一字符,然后将所有单词更改为Unix,然后将魔术字符更改回Linux。

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

以上也保留了标点符号。

[...]总是定义一个字符类,因此它匹配一个SINGLE字符。所以[^linux]不是非linux词,而是一个不是linux的单个字符