个性化阅读
专注于IT技术分析

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|'
Linux sed正规表达式

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


互动编辑

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

例:

sed -i 's/today/tomorrow/' file
Linux Sed正则表达式2

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


简单反向引用

双”&”号用于搜索和查找指定的字符串。它将使用sed命令打印找到的字符串。

例:

echo fourty | sed 's/four/&&/'
Linux Sed正则表达式3

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


任何字符的点

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

例:

echo xxxx-xx-xx | sed 's/....-..-../YYYY-MM-DD/'
Linux sed正则表达式4

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


多向引用

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

例:

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/'
Linux sed正则表达式5

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


空白空间

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

例:

echo -e 'this\tis\tsrcmini' | sed 's/\s/ /g'
Linux sed正则表达式6

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


可选发生

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

例:

cat list2 | sed 's/iii\?/Y/'
Linux sed正则表达式7

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


确切的n次出现

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

例:

cat list2 | sed 's/i\{3\}/Y/'
Linux sed正则表达式7

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


发生范围

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

例:

cat list2 | sed 's/i\{3, 4\}/Y/'
Linux sed正则表达式8

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

赞(0)
未经允许不得转载:srcmini » Linux Sed正则表达式

评论 抢沙发

评论前必须登录!