[英]Substitute all words in text by Unix but Linux and whitespaces
我有这样的文字:
Linux提供了一些功能强大的管理工具和实用程序,可以帮助您有效地管理系统。 如果您不知道这些工具是什么以及如何使用它们,则可能会花费大量时间尝试执行基本的管理任务。 本课程的重点是帮助您了解系统管理工具,这将帮助您成为有效的Linux系统管理员。 立即获取Linux Sysadmin课程!
我想用sed工具将Unix中的所有单词EXCEPT Linux和whitespaces替换为Unix。 有任何想法吗? 我已经试过了:
sed -e 's/[^linux]/linux/g' -e 's/[[:space:]]/[[:space:]]/g'
但是它只是输出unix
而没有空格。
使用正则表达式通常很难做到“一切都好”。 您可能可以分3个步骤完成,首先将Linux
更改为特殊的唯一字符,然后将所有单词更改为Unix,然后将魔术字符更改为Linux。
sed -r -e 's/Linux/@/g' -e 's/[^ @,;\.]+/Unix/g' -e 's/@/Linux/g'
上面也保留了标点符号。
[...]
始终定义一个字符类,因此它匹配一个字符。 因此[^linux]
不是非Linux单词,而是不是l
, i
, n
, u
或x
的单个字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.