sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有 改变,除非你使用重定向存储输出.
# 替换sed 's/pattern/replace/[g p w n] 全局 打印 写入 不打印
# 替换首行首个
sed 's/night/NIGHT/' quote.txt
# 去掉$符号
sed 's/\$//' quote.txt
# 全文替换
sed 's/The/WOW!/g' quote.txt
# 写入result.txt文件
sed 's/The/WOW!/w result.txt' quote.txt
## 删除操作
# 删除第一行
sed '1d' quote.txt
# 删除1-3行
sed '1,3d' quote.txt
# 删除尾行
sed '$d' quote.txt
# 删除含有The的行
sed '/The/d' quote.txt
# 删除含-的行
echo -e "abc\n-def"|sed '/--*/d'
# 使用系统sed
# 去掉首/符号
echo "/usr/local"|sed 's/^\///g'
# 插入字符
echo "Mr Willis"|sed 's/Mr/& Bruce/g'
# 删除扩展名
echo "account.doc"|sed 's/\..*//g'
# 删除文件名
echo "account.doc"|sed 's/.*\.//g'
# 附加扩展名
echo "account"|sed 's/$/.doc/g'
# 附加文件名
echo ".doc"|sed 's/^/account/g'
# 特殊字符替换
echo "Department+payroll%Building G"|sed 's/\+/ of /g'|sed 's/\%/ Located at /g'
#删除结尾句点
echo -e "abcd.\nda"|sed 's/\.$//g'
#删除串中abcd
echo "abcddde"|sed 's/abcd//g'
#删除一个以上空格,用一个空格代替
echo -e " abd ad"|sed 's/ */ /g'
#删除行首的空格
echo -e " ab\ncd"|sed 's/^ //g'
#删除句点后跟两个或更多空格,代之以一个空格
echo " sdf sd sd ddaf"|sed 's/^ *//g'
#删除空行
sed '/^$/d' quote.txt
#删除第一个字符
echo "abc"|sed 's/^.//g'
#删除紧跟COL的后三个字母
sed 's/COL\(...\)/COL/g'
#删除所有空格并用tab键替代
echo "a b"sed 's/ / /g'
#删除行首所有tab键
echo " ba "|sed 's/^ //g'
#删除所有tab键
echo " abc"sed 's/ *//g'
##创建sed脚本
## append.sed
#!/bin/sed -f
/company/ a\
The end of artical.
## insert.sed
#!/bin/sed -f
/company/ i\
Insert one line
## update.sed
#!/bin/sed -f
/honeysuckle/ c\
update one line.
3 a\
add one line.
$ c\
The end of artical.
阅读(1642) | 评论(0) | 转发(0) |