sed命令格式
• sed [option] “[action]” [filename]
• option: •
• h或—help • 显示帮助。
• n仅显示script处理后的结果。
• V或—version • 显示版本信息。
• e :允许对输入数据应用多条sed命令进行编辑。
• f :直接将 sed 的动作写在一个文件内, -f • filename • 则可以运行,filename 内的 sed 动作
sed的原理:sed是非交互式的文本处理工具。通常都会是在shell脚本里面去使用的,是对于文件的内容按照行来读取到临时缓冲区里面,把一行处理完毕 在打印到屏幕上,清除临时缓冲区 在去读取下一行的数据 一直这样迭代进行处理直到文件末尾
另外啊,sed 不支持把处理的结果写回到原来的文件的。原因是这是系统本身就是不支持的。如下所示:
Sed的action的操作:
s: 字符串查找、替换
i: 插入数据
d: 删除
a: 追加
c: 替换
p: 打印指定的输出行
案例: 创建vim demo.txt
hello hadoop
hello, hive
hello spark
需求01:替换所有的hello 为hi
sed “s/hello/hi/g” demo.txt > demo1.txt ; cat demo1.txt >demo.txt ; 这里面是两步的操作;表示通过中间文件demo1.txt 把修改的结果写回到原来的文件里面去了 ;另外我们可以加上-i 来写回到原来的文件里面去
sed -i "s/hello/hi/g" demo.txt #### /g 表示的替换一行上面的所有的匹配的信息
需求02:替换第一行的第一个l
sed "1s/l/L/1"
需求03:替换第一行的前面两个l
sed "s/l/L/1; s/l/L/1"
需求04:替换第一行,第二行的hello
sed "1,2 s/hello/hi/g" demo,txt
需求05:替换第一行,直到最后一行的hello为hi
sed "1, $ s/hello/hi/g" 记住这里面必须在$ 的后面加上一个空格;
sed命令
• 替换第一行的第3个以及以后的o:
sed ‘1s/o/O/3g' • demo.txt
• 多个匹配
如果我们需要一次替换多个模式
第一种方式
sed 's/l/L/1;s/o/O/3g' demo.txt
第二种方式
sed -e 's/l/L/1' -e 's/o/O/3g' demo.txt
另外:
a动作就是append i动作是insert
案例:
如: 使用n i 添加一行,在第一行添加
sed "1 i hi word" demo.txt 表示的是在第一行插入hi world
使用n a 追加一行, 在第一行后追加
sed ”1 a hi word" demo.txt 表示的是在第一行追加hi world
• d动作删除匹配行
sed "/hdfs/d" demo.txt