Chinaunix首页 | 论坛 | 博客
  • 博客访问: 671544
  • 博文数量: 96
  • 博客积分: 2005
  • 博客等级: 上尉
  • 技术积分: 1061
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-21 13:59
文章分类

全部博文(96)

文章存档

2013年(11)

2012年(30)

2011年(55)

分类: LINUX

2011-08-23 15:17:43

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) |
给主人留下些什么吧!~~