我的文字如下:
Linux提供了几种功能强大的管理工具和实用程序,可帮助您有效地管理系统。如果您不知道这些工具是什么以及如何使用它们,您可能会花费大量时间尝试执行基本的管理任务。本课程的重点是帮助您了解系统管理工具,这将有助于您成为有效的Linux系统管理员。 立即获取Linux Sysadmin课程!
我想用Unix和sed工具替换所有单词,除了Linux和文本中的空格。有任何想法吗?我试过这个:
sed -e 's/[^linux]/linux/g' -e 's/[[:space:]]/[[:space:]]/g'
但它只输出unix
没有空格。
答案 0 :(得分:0)
“Everything BUT”通常很难用正则表达式。您可以分三步完成,首先将Linux
更改为一个特殊的唯一字符,然后将所有单词更改为Unix,然后将魔术字符更改回Linux。
sed -r -e 's/Linux/@/g' -e 's/[^ @,;\.]+/Unix/g' -e 's/@/Linux/g'
以上也保留了标点符号。
[...]
总是定义一个字符类,因此它匹配一个SINGLE字符。所以[^linux]
不是非linux词,而是一个不是l
,i
,n
,u
或x
的单个字符