sed
是 stream editor
的缩写,它一种流编辑器,它一次处理一行内容 。
基本用法如下:
# sed --help
sed [OPTION]... {script-only-if-no-other-script} [input-file]...
# sed [参数] '范围 操作' 文件
例:
sed -n '1,4 p' demo.txt # 打印demo.txt文件1~4行的内容
-n
使用安静(silent)模式。加上-n参数后,则只有经过 sed
特殊处理的那一行(或者command)才会被列出来。-i
直接编辑原文件-i.bak
直接编辑原文件,同时会生成一个.bak的备份文件。推荐使用这种方式。防止误操作-f
-f filename
可以执行filename内的 sed
命令-e
多点编辑sed 可以很灵活的查找对应范围的内容,常见的范围选择如下:
2
选择第二行$
选择最后一行2,5
选择 2~5行1~2
奇数行2~2
偶数行1,$
第一行到文件最后一行另外 sed
还支持正则匹配。比如:
/name/
出现name 字符的行/name/,+3
出现 name 字符的行内容以后边的3行/^xxx/
选择已 xxx
开头的行/xxx/,/yyy/
出现 xxx
的行以及出现 yyy
行之间的数据^
匹配行开始。如:/^sed/
以sed开头的行.
单个字符*
0个或者多个匹配+
1个或者多个匹配?
0个或者1个匹配x\{m,n\}
重复连续字符x,m-n次数p
打印匹配到的内容d
将匹配到的内容进行删除。如果需要对原文件进行编辑, 需要结合 -i
或 -i.bak
参数w
匹配到的内容写入到其他文件。 例:
sed -n '/xxx/ w output.txt' demo.txt # 将demo.txt 文件中包含 xxx 的行内容写入 output.txt显示第一行的内容
sed -n '1'p filename
显示第三行到最后一行的内容
sed -n '3,$'p filename
显示匹配 name 关键的行
sed -n '/name/'p
打印出现 <command>
的行以及出现 </command>
行之间的数据
sed -n '/<command>/,/<\/command>/ p' demo.txt
打印长度不小于5个字符的行
sed -n '/^.\{5\}/ p' demo.txt
删除所有的空行
sed -e '/^$/ d' demo.txt
删除行首的空格
sed -e 's/^[ \t]*//g' demo.txt
删除行尾的空格
sed -e 's/[ \t]*$//g' demo.txt
给文件的每一行使用双引号包围起来
sed -e 's/.*/"&"/g' demo.txt
将文件的内容多行换成单行,同时每一行过滤掉收尾的空格并且使用双引号包围起来
例如:
abc 123
转成如下格式:
"abc","123"
sed -e 's/[ \t]*$//g' -e 's/^[ \t]*//g' -e '/^$/ d' -e 's/.*/"&"/g' demo.txt |tr "\n" "," |sed -e 's/,$//g'
# 这里还有一个相对简单的命令也可以起到相同的目的,不过行内字符串中间有空格或者换行符时得到的结果可能会不同
echo '"'`awk '{print $1}' demo.txt |xargs |sed 's/ /","/g'`'"'
扫码关注腾讯云开发者
领取腾讯云代金券
Copyright © 2013 - 2025 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有
深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569
腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287
Copyright © 2013 - 2025 Tencent Cloud.
All Rights Reserved. 腾讯云 版权所有