您的位置:首页 > 运维架构 > Shell

shell编程高级之sed编辑器

2015-12-04 21:27 459 查看
简介

#流编辑器

#可以基于输入到命令行的或是存储在命令文本文件中的命令来处理数据流中的数据.

#每次读取一行,用提供的编辑器命令匹配数据,按命令中指定的方式修改流中的数据,然将生成的数据输出到STDOUT.在流编辑器将所有命令与一行数据进行匹配后,它会读取下一行并重复这个过程直到处理完所有数据.

#sed 自身不会修改文本文件的数据.只将修改后的数据发送到STDOUT

sed options script file


#sed 命令选项

选项描述
-e script在处理输入时,将script中指定的命令添加到运行的命令中
-f file在处理输入时,将file中指定的命令添加到运行的命令中
-n不要为每个命令生成输出,等待print命令来输出
#在命令行使用
sed  echo "This is a test" | set 's/test/big test/'


#修改文件
sed 's/dog/cat/' data.txt


#在命令行使用多个编辑器命令
sed -e 's/This/That/; s/test/big test/'


#从文件中读取编辑器命令 sed -f 编辑器命令文件名 数据文件名

sed编辑器基础

#更多的替换选项

# 替换标记

s/pattern/replacement/flags


标记描述
数字替换第几处
g全局替换
p打印内容
w file将替换的结果写入到文件中
echo "This test is a big test" | sed 's/test/Test/'

echo "This test is a big test" | sed 's/test/Test/2'

echo "This test is a big test" | sed 's/test/Test/g'

echo "This test is a big test" | sed 's/test/Test/p'

echo "This test is a big test" | sed 's/test/Test/pg'


# 替换字符

#使用其他字符来作为sed命令的字符串分隔符

sed 's!/bin/bash!/bin/sh' /etc/passwd


#只修改文本中第二行数据

sed '2s/dog/cat/' data1


#修改文本中第二行和第十行之间的数据

sed '2,10s/dog/cat/' data1


#修改文本中第二行到最后一行的数据

sed '2,$/s/dog/cat/' data1


#使用文本模式过滤器

sed '/wangjingj/s/bash/csh/' /etc/passwd


sed '/pattern/s/pattern/replacement/flags' /etc/passwd


#删除行

#不加n则删除所有,n代表第几行

#$代表文本文件的文件尾

sed 'n1,n2($)d' data1


#插入和附加文本

#$代表文本文件的文件尾

#在文本行前插入 i
sed 'ni\

#                                          textcontent'


#在文本行后追加 a
sed 'na\

#                                          textcontent'


#修改行
sed 'nc\

#                       textcontent' data1


# 使用文本模式
sed '/wang n/c\

#                                                 textcontent'


#转换命令
sed 'ny/inchars/outchars/'


#字符级.全局替换.

#回顾打印

#打印行

#p 打印文本行

#= 打印行号

#l 列出行

#使用sed和文件一起

#向文件写入
sed 'n1,n2w filename' data1


#读取
sed 'nr filename' data1
..读取filename文件 插入到data1的数据流的第n行中

#$表示文件尾

#文本模式
sed '/pattern n/r filename' data1
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: