sed是一个在linux下很好用的文件处理工具,主要是以行为单位进行处理,可以将数据行进行替换、删除、新增等。
参数说明:
-e<script>或--expression=<script> 以选项中指定的script来处理输入的文本文件。
-f<script文件>或--file=<script文件> 以选项中指定的script文件来处理输入的文本文件。
-h或--help 显示帮助。
-n或--quiet或--silent 仅显示script处理后的结果。
-V或--version 显示版本信息。
常用操作:
a :新增, a 的后面可以接字串,而这些字串会在下一行出现
c :行取代, c 的后面可以接字串,这些字串可以取代某几行!
d :删除行
i :插入,i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印,即将某个选择的数据print出来
s :字符串取代
sed命令主要是:sed +参数+范围+操作 +要操作的文件。
如:sed -n '1d' a.txt #删除第一行
-n
为quiet或silent模式,1为选择第一行,d
为删除
1.删除:d
sed '$d' a.txt #删除最后一行
sed '1,2d' a.txt #删除第一行到第二行
sed '2,$d' a.txt #删除第二行到最后一行
对行的处理:
1 选择第1行。
2,5 选择2到5行,共4行。
1~2 选择奇数行。
2~2 选择偶数行。
2,+3 和2,5的效果是一样的,共4行。
3,$ 从第3行到文件结尾。
范围的选择还可以使用正则匹配,如:
/ab/,+2 选择出现ab字样的行,以及后面的2行。
/^a/,/b/ 选择以a开头的行,和出现b字样行之间的数据。
2.打印某行: p
sed -n '1,2p' a.txt #打印第一行到第二行
使用模式进行查询
sed -n '/hello/p' a.txt #查询包括关键字hello所在所有行
sed -n '/\$/p' a.txt #查询包括关键字$所在所有行,使用反斜线\屏蔽特殊含义
3.增加一行或多行字符串: a
sed '1a hello' a.txt #第一行后增加字符串"hello"
sed '1,3a hello lily' a.txt #第一行到第三行后各增加字符串"hello lily"
sed '1a drink hello\nlily' a.txt #第一行后增加多行,使用换行符\n
4.替代某一行或者某几行:c
sed '1c Hello' a.txt #第一行代替为Hello
sed '1,2c Hello' a.txt #第一行到第二行代替为Hello
5.替换一行中的某部分: s
格式:sed 's/要替换的字符串/新的字符串/g' (要替换的字符串可以用正则表达式)
sed 's/yes/no/g' a.txt #替换yes为no
6.插入 :i
sed -i '$a end' a.txt #在文件a中最后一行直接输入"end"
删除匹配行
sed -i '/匹配字符串/d' a.txt
sed -i '/^a.*/d' a.txt
替换匹配行中的某个字符串
sed -i '/匹配字符串/s/替换源字符串/替换目标字符串/g' a.txt
sed -i 's/^a.*/hello/g' a.txt
欢迎关注!
参考:
https://www.runoob.com/linux/linux-comm-sed.html
https://blog.csdn.net/qq_34834325/article/details/78523112
网友评论