sed是一个流编辑器,可以有效处理一行信息,根据需求输出内容。当然输入多行也可以一次处理多行。
需要注意的是sed *** 作并不会对原来的内容进行改变,对原文件增删改是临时的。
sed常用内部命令:
a 在匹配后面添加
i 在匹配前面添加
p 打印
d 删除
s 查找替换
c 更改
y 转换 N D P
这些命令结合正则表达式可以起到很好的信息处理效果。
sed的一些提示符
数字 表示新文本替换的模式
g: 表示用新文本替换现有文本的全部实例
p: 表示打印原始的内容
w filename: 将替换的结果写入文件
针对下列文本内容,使用 sed 命令完成以下 *** 作
4000001476
4000000041
4000002754
4000000944
4000002549
(1)将文本内容中每行中的 400 替换为 800 显示,即输出如下: 8000001476
8000000041
8000002754
8000000944
8000002549
cat number.txt | sed -e 's/400/800/g'
使用s(查找替换),并使用g提示符,查找替换所有的400,变为800
(2) 使用正则表达式,将文本内容中每行的前三个数字,以小括号括起来显示, 即输出如下:
(400)0001476
(400)0000041
(400)0002754
(400)0000944
(400)0002549
cat number.txt | sed -r 's/(^[0-9]{3})/()/'
匹配前三个数字,将其用括号扩出,可以在之后以(\1)的形式使用这块内容。可以有多块,按序以数字命名。
(3)使用正则表达式,将文本内容中每行的中间三个数字前后增加“-”符号, 即输出如下:
400-000-1476
400-000-0041
400-000-2754
400-000-0944
400-000-2549
cat number.txt | sed -r 's/(^[0-9]{3})([0-9]{4})/--/'
匹配前三个数字,再匹配四个数字,在每组之后加一个 - 。
(4)打印输出第3行到最后一行的内容,即输出:
4000002754
4000000944
4000002549
cat number.txt | sed -e '1,2d'
这里只需要将前两行删去,就可以输出从第三行开始的内容。注意:删除并不会改变文件的原始内容。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)