sed简介
sed是linux中提供的一个外部命令,它是一个行(流)编辑器,非交互式的对文件内容进行增删改查的操作,使用者只能在命令行输入编辑命令、指定文件名,然后在屏幕上查看输出。它和文本编辑器有本质的区别。
区别是:文本编辑器: 编辑对象是文件 行编辑器:编辑对象是文件中的行
也就是前者一次处理一个文本,而后者是一次处理一个文本中的一行。这个是我们应该弄清楚且必须牢记的,否者可能无法理解sed的运行原理和使用精髓。

sed 命令
sed [options] ‘{command}[flags]’ [filename]# 中括号内容必有 大括号内容可有可无sed # 执行命令[options] # 命令选项{command}[flags] # sed内部选项和参数[filename] # 文件
命令选项-e script 将脚本中指定的命令添加到处理输入时执行的命令中 多条件,一行中要有多个操作-f script 将文件中指定的命令添加到处理输入时执行的命令中-n 抑制自动输出-i 编辑文件内容-i.bak 修改时同时创建.bak备份文件。-r 使用扩展的正则表达式! 取反 (跟在模式条件后与shell有所区别)sed常用内部命令a 在匹配后面添加i 在匹配前面添加p 打印d 删除s 查找替换c 更改y 转换 N D Pflags数字 表示新文本替换的模式g: 表示用新文本替换现有文本的全部实例p: 表示打印原始的内容w filename: 将替换的结果写入文件
替换所有匹配到的关键字
sed 's/原字符串/替换字符串/g'# 在末尾加g替换每一个匹配的关键字,否则只替换每行的第一个

直接将替换好的结果重新写入文本
-i 参数就是写入原文本
sed 's/ ,/g' a.txt -i ## 改变测试数据,将空格替换为逗号
将换行符替换成逗号
注意:这个比较特殊,因为sed默认是一行一行处理的,所以你想把换行符给替换掉还不能用常规的替换方法,必须这样写
sed ":a;N;s/\\n/,/g;ta" a.txt

将逗号替换成换行符
sed 's/,/\n/g' a.txt

将每行开头和结尾添加特定的字符
-e 是多次替换
"^"代表行首,"$"代表行尾
sed -e 's/^/"/g' -e 's/$/"/g' a.txt

上面的例子100%你会用到,非常值的学习下sed的强大语法。
文章转载自干货食堂,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




