命令格式
sed [options] 'command' file(s)sed [options] -f scriptfile file(s)
常用操作
# 给每一行加上 " & 表示引用原文
sed 's/.*/"&"/' file
# 给每一行加上 " 并使用 , 合并行
sed -e 's/.*/"&"/' file | sed -e ':a;N;s/\n/,/;t a;'
# 给每一行加上 " 并使用 , 合并行,并在行首添加( 行尾添加 )
sed -e 's/.*/"&"/' file | sed -e ':a;N;s/\n/,/;t a;' | sed -e "1i(" -e "$ a )"
# 去除空白行
sed -e '/^$/d' file
# 去除空白行和只有空字符的行
sed -e '/^$/d' -e '/[[:space:]]/d' file
常用命令
a #在当前行下面插入文本
i #在当前行上面插入文本
c #把选定的行改为新的文本
d #删除,删除选择的行
D #删除模板块的第一行
s #替换指定字符
h #拷贝模板块的内容到内存中的缓冲区
H #追加模板块的内容到内存中的缓冲区
g #获得内存缓冲区的内容,并替代当前模板块中的文本
G #获得内存缓冲区的内容,并追加到当前模板块文本的后面
l #列表不能打印字符的清单
n #读取下一个输入行,用下一个命令处理新的行而不是用第一个命令
N #追加下一个输入行到模板块后面并在二者间嵌入一个新行,改变当前行号码
p #打印匹配的行
P #(大写)打印模板的第一行
q #退出Sed
b #lable 分支到脚本中带有标记的地方,如果分支不存在则分支到脚本的末尾
r #file 从file中读行
t #label if分支,从最后一行开始,条件一旦满足或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾
T #label 错误分支,从最后一行开始,一旦发生错误或者T,t命令,将导致分支到带有标号的命令处,或者到脚本的末尾
w #file 写并追加模板块到file末尾
W #file 写并追加模板块的第一行到file末尾
! #表示后面的命令对所有没有被选定的行发生作用
= #打印当前行号码
# #把注释扩展到下一个换行符以前
替换命令
g #表示行内全面替换(全局替换配合s命令使用)
p #表示打印行
w #表示把行写入一个文件
x #表示互换模板块中的文本和缓冲区中的文本
y #表示把一个字符翻译为另外的字符(但是不用于正则表达式)
1 #子串匹配标记
& #已匹配字符串标记
学习文档
- 推荐 sed指南