Linux 命令之---Sed --01

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
 


 

猜你喜欢

转载自blog.csdn.net/tryll/article/details/86584507
今日推荐