Linux Sed正则
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|'
请看上面的快照,字符串'interactive'使用sed命令将更改为" distractive"。尽管有正斜杠(/),冒号(: ),下划线(_)和竖线(|)也可以。
交互式编辑器
sed命令旨在用作流编辑器,同时还可以用作文件上的交互式编辑器。对于交互式编辑器,使用选项" i"。
示例:
sed-i 's/today/tomorrow/' file
看上面的快照,流" today"被转换为"明天"在"文件"中。
简单后向引用
双"&"号用于搜索和查找指定的字符串。它将使用sed命令打印找到的字符串。
示例:
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\tlidihuo' | sed 's/\s/ /g'
请看上面的快照," \ s"用于单个空间。
可选发生次数
您可以通过用(?)问号指定可选内容来指定可选内容。
示例:
cat list2 | sed 's/iii\?/Y/'
请看上面的快照,我们将第三个" i"作为可选。认为必须将两个" i"转换为" Y"。
确切发生n次
确切发生的时间由" {times}" 指定。
示例:
cat list2 | sed 's/i\{3\}/Y/'
请看上面的快照,我们已经精确地指定了'我。
出现范围
我们还可以根据出现范围来指定出现次数。例如,如果我们将范围指定为{m,n},则'm'表示最小发生次数,'n'表示最大发生次数。
示例:
cat list2 | sed 's/i\{3,4\}/Y/'
请看上面的快照,我们将最小范围指定为3,最大范围范围为4、