本文共 2459 字,大约阅读时间需要 8 分钟。
sed是一个很好的文件处理工具,本身是一个管道命令,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增、选取等
sed [-nefri] 'command' filename
-n
:使用安静(silent)模式。只有经过sed 特殊处理的那一行(或者动作)才会被列出来
-f
:直接将 sed 的动作写在一个文件内,-f filename 则可以执行 filename 内的sed 动作
-r
:sed 的动作支援的是延伸型正规表示法的语法
a
:添加,后面可以接字符串,而这些字串会在新的一行出现(当前的下一行)
c
:取代(整行),后面可以接字符串,这些字串可以取代 n1,n2 之间的行
i
:插入,i 的后面可以接字串,而这些字串会在新的一行出现(当前的上一行)
s
:替换(以字符串为单位)
's/要替换的字符串/新的字符串/g'
(末端的g表示在行内进行全局替换)
y
:替换(以字符为单位,按照一对一的方式从左到右进行转换,类似于tr)
- [root@rhel5 data]# sed '1d' keyword #删除第一行
- [root@rhel5 data]# sed '$d' keyword #删除最后一行
- [root@rhel5 data]# sed '1,3d' keyword #删除第一行到第三行
- [root@rhel5 data]# sed '/opq/,/dca/d' keyword #删除包含opq到包含dca之间的行
- [root@rhel5 data]# sed '5,$d' keyword #删除最后一行
- [root@rhel5 data]# sed -e '1,3d' -e '6,8d' keyword #删除第1到3行和第6到8行之间的内容
- [root@rhel5 data]# sed -n '1p' keyword #显示第一行
- [root@rhel5 data]# sed -n '$p' keyword #显示最后一行
- [root@rhel5 data]# sed -n '2,5p' keyword #显示第二到第五行
- [root@rhel5 data]# sed -n '7,$p' keyword #显示第七到最后一行
- [root@rhel5 data]# sed -n '/abc/p' keyword #查询包含abc的所有行
- [root@rhel5 data]# sed -n '/\$/p' keyword #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
- [root@rhel5 data]# sed '1a drink tea' keyword #第一行后增加字符串"drink tea"
- [root@rhel5 data]# sed '1,3a drink tea' keyword #第一行到第三行后都增加字符串"drink tea"
- [root@rhel5 data]# sed '1a drink tea\nor coffee' keyword #第一行后增加多行,使用换行符\n
- [root@rhel5 data]# sed '1c Hi' keyword #第一行代替为Hi
- [root@rhel5 data]# sed '1,2c Hi' keyword #第一行到第二行代替为Hi(一二行合并为一行)
- [root@rhel5 data]# sed -n 's/abc/efg/p' keyword #替换abc为efg
- [root@rhel5 data]# sed -n 's/abc//p' keyword #删除abc关键字
- [root@rhel5 data]# sed -i '$a bye' keyword #在文件keyword中最后一行直接输入"bye"
- [root@rhel5 data]# sed '/abc/r text' keyword #将txet文件中内的文本内容添加到包含abc的所有行后面
- [root@rhel5 data]# sed '1,5y/abc12/ABC89/' keyword #将1到5行中所有的a替换为A,b替换为B,c替换为C,1替换为8,2替换为9
=============================================================================
通过使用tr,可以地实现 sed 的许多最基本的功能。可将 tr 看作为 sed的简化(以字符为单位)
用法:tr [-cdst] 集合1 [集合2] ...
-c
用集合1中的字符串替换,要求字符集为ASCII
- [root@rhel5 data]# ls| tr ' ' '\n' #将空格替换为换行
- [root@rhel5 data]# tr abc12 ABC89 <keyword #将a替换为A,b替换为B,c替换为C,1替换为8,2替换为9
- [root@rhel5 data]# tr [a-z] [A-Z] <keyword #将小写替换为大写
- [root@rhel5 data]# tr [0-9] [a-j] <keyword #将数字0-9替换为a-j
- [root@rhel5 data]# tr -d linux123 <keyword #删除文件中的 l i n u x 1 2 3 (字符,而非字符串)
- [root@rhel5 data]# tr -s [0-9] <keyword #删除文本中重复出现的数字
转载地址:http://uzkla.baihongyu.com/