📜  Linux Sed正则表达式

📅  最后修改于: 2020-12-08 05:09:00             🧑  作者: Mango

Linux Sed正则表达式

流编辑器

sed命令用于流编辑。

例:

echo interactive | sed 's/inte/dist/'
echo interactive | sed 's:inte:dist:'
echo interactive | sed 's_inte_dist_'
echo interactive | sed 's|inte|dist|'

查看上面的快照,使用sed命令将字符串“ interactive”更改为“ distractive”。尽管正斜杠(/) ,冒号(:) ,下划线(_)和竖线(|)也可以使用。

互动编辑

sed命令旨在作为流编辑器,同时还可以用作文件上的交互式编辑器。对于交互式编辑器,使用选项“ i”。

例:

sed -i 's/today/tomorrow/' file

看上面的快照,流“今天”在“文件”中转换为“明天”。

简单反向引用

双连字符用于搜索和查找指定的字符串。它将使用sed命令print找到的字符串。

例:

echo fourty | sed 's/four/&&/'

看上面的快照,“&”号已搜索字符串“ four”并将其打印为“ fourfourty”。

任何字符的点

在正则表达式中,一个简单的点可以表示任何字符。

例:

echo xxxx-xx-xx | sed 's/....-..-../YYYY-MM-DD/'

查看上面的快照,点被日期格式替换。

多重反向参考

如果使用不止一对括号,则称为分组。在这里,它们每个都可以分别称为三个连续的数字。

例:

echo 2014-06-30 | sed 's/\(....\)-\(..\)-\(..\)/\1:\2:\3/'
echo 2014-06-30 | sed 's/\(....\)-\(..\)-\(..\)/\1_\2_\3/'
echo 2014-06-30 | sed 's/\(....\)-\(..\)-\(..\)/\2:\3:\1/'
echo 2014-06-30 | sed 's/\(....\)-\(..\)-\(..\)/\3:\2:\1/'

看上面的快照,日期以不同的格式打印。此处,将2014标记为(1),将06标记为(2),将30标记为(3)。

空白空间

空格语法为“ \ s”,制表符空间语法为“ \ t”。

例:

echo -e 'this\tis\tjavatpoint' | sed 's/\s/ /g'

查看上面的快照,“ \ s”用于单个空格。

可选发生

您可以通过使用(?)问号来指定可选内容。

例:

cat list2 | sed 's/iii\?/Y/'

查看上面的快照,我们将第三个“ i”作为可选项。必须指出,必须将两个“ i”转换为“ Y”。

确切的n次出现

确切的时间发生由“ {times}”指定。

例:

cat list2 | sed 's/i\{3\}/Y/'

看上面的快照,我们已经精确地指定了“ i”出现的三倍。

发生范围

我们还可以根据范围来指定发生次数。例如,如果将范围指定为{m,n},则'm'表示最小发生次数,'n'表示最大发生次数。

例:

cat list2 | sed 's/i\{3,4\}/Y/'

查看上面的快照,我们将最小范围指定为3,最大范围指定为4。