📜  sed 只保留括号之间的字符串 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:47:21.560000             🧑  作者: Mango

使用 sed 命令只保留括号之间的字符串

在 Shell-Bash 中,我们可以使用 sed 命令来只保留括号之间的字符串。sed 是一个流式文本编辑器,可以对文本进行各种操作,包括替换、删除、插入等。在本文中,我们将演示如何使用 sed 命令只保留括号之间的字符串。

语法

sed 语法如下:

sed [选项] [动作]

选项包括:

  • -n:只显示被处理过的行,不显示未处理的行;
  • -e:允许同时指定多个动作;
  • -f:从文件中读取动作。

动作是由一个地址和一个命令构成的,形式如下:

[address]action

address 定义了 sed 将要处理的文本的行范围,可以是单行或多行。如果省略 address,则表示对所有文本行执行命令。

action 定义了 sed 将要执行的操作,包括替换、删除、插入等。我们将在下面的示例中使用到。

示例

在下面的示例中,我们将使用 sed 命令只保留括号之间的字符串。

假设我们有一个文本文件 test.txt,包含以下内容:

Hello (world)!
How are you (doing) today?
It is (nice) to meet you.

我们想要只保留括号之间的字符串,可以使用以下命令:

sed -n 's/.*(\([^)]*\)).*/\1/p' test.txt

该命令的含义如下:

  • -n:只显示被处理过的行,不显示未处理的行;
  • s/.(([^)])).*/\1/:用括号之间的字符串替换掉整个字符串,这个正则表达式的含义是:
    • .(([^)])).*:匹配任何字符,直到第一个左括号,然后匹配任何不是右括号的字符,直到右括号,最后匹配任何字符;
    • ([^)]*):用于捕获括号之间的字符串;
    • \1:替换为之前捕获的字符串;
  • p:只打印被修改过的行。

运行该命令后,输出如下:

world
doing
nice

这样我们就只保留了括号之间的字符串。

结论

在本文中,我们介绍了如何使用 sed 命令只保留括号之间的字符串。sed 是一个非常强大的文本编辑器,可以进行各种文本操作。通过本文的学习,相信大家已经掌握了如何使用 sed 命令进行文本操作的基本方法。