【问题标题】:Substitute all words in text by Unix but Linux and whitespaces用 Unix 替换文本中的所有单词,但 Linux 和空格
【发布时间】:2014-03-06 06:31:56
【问题描述】:

我有这样一段文字:

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

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

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

但它只输出unix 没有空格。

【问题讨论】:

    标签: linux sed


    【解决方案1】:

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

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

    上面也保留了标点符号。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-11-23
      • 2022-12-11
      • 2013-11-28
      • 1970-01-01
      • 2010-11-19
      • 2014-08-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多