Linux三剑客——sed命令简述
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux三剑客——sed命令简述相关的知识,希望对你有一定的参考价值。
Linux三剑客——sed
13.1 sed介绍
- sed——流编辑器(stream editor)
- sed功能与版本:处理文本文件,日志,配置文件
增加、删除、修改、查询
sed --version - 语法格式:sed [选项] [sed指令] [输入文件]
sed -i.bak ‘s#boy#girl#g‘ oldboy.txt
-i sed命令的参数
s sed命令
g 小尾巴/修饰 - sed命令执行过程
13.2 sed命令功能示例 - 等号’=‘显示行号
sed = person.txt
- 单行-输入行号即可
sed -n ‘3p‘ person.txt
103,Alex,COO
- 显示多行
sed -n ‘3,6p‘ person.txt
- 包含oldboy的行
sed -n ‘/oldboy/p‘ person.txt
101,oldboy,CEO
- 显示包含oldboy到显示yy的行
sed -n ‘/oldboy/,/yy/p‘ person.txt
101,oldboy,CEO
102,zhangyao,CTO
103,Alex,COO
104,yy,CFO - 显示包含oldboy或yy的行
sed -nr ‘/oldboy|yy/p‘ person.txt
- 显示不连续的行
sed -nr ‘1p;3p;4p‘ person.txt
- 文件的最后一行增加两行
sed ‘$a106,wuxingge,UFO\n107,lee,XO‘ person.txt
#a==append 追加
#i==insert 插入echo -e ‘106,wuxingge,UFO\n107,lee,XO‘>>person.txt
cat >>person.txt <<EOF
106,wuxingge,UFO
107,lee,XO
EOF - 不显示空行方法 !表示取反
sed ‘/^$/d‘ person.txt
sed -n ‘/^$/!p‘ person.txt
awk ‘!/^$/‘ person.txt
grep -v ‘^$‘ person.txt
- ‘s###’表示逐行替换符合条件的第一个对象
sed ‘s#1#dou#‘ person.txt
dou01,oldboy,CEO
-i 表示确定修改
-i.bak 表示先备份再修改
sed中双引号内变量可以执行 - sed命令中&符号表示前面正则匹配到的内容
echo ‘123456‘|sed ‘s#.*#<&>#g‘
<123456>
echo ‘123456‘|sed -r ‘s#([0-9])#<\1>#g‘
<1><2><3><4><5><6>
echo ‘123456‘|sed ‘s#.#<&>#g‘
<1><2><3><4><5><6>
13.3 批量修改文件名
方法1-使用sed替换ls .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘
mv oldboy01.jpg oldboy01.avi
mv oldboy02.jpg oldboy02.avils .jpg|sed -r ‘s#(.)jpg#mv & \1avi#g‘|bash
方法2-使用rename方法批量修改文件名
rename jpg avi old*.jpg
rename from to file
替换的内容 替换成什么 替换哪些文件
13.4 使用sed命令常见的坑 - -r与-i同时使用:
-r参数在前面:-ri 正常结果
-i参数在前面:-ir 表示先把文件备份xxr,然后再替换文件中的内容 - -r与-n同时使用:会把源文件的内容清空,只显示符合条件内容
以上是关于Linux三剑客——sed命令简述的主要内容,如果未能解决你的问题,请参考以下文章