Chinaunix首页 | 论坛 | 博客
  • 博客访问: 593628
  • 博文数量: 226
  • 博客积分: 10080
  • 博客等级: 上将
  • 技术积分: 1725
  • 用 户 组: 普通用户
  • 注册时间: 2007-11-26 11:15
文章分类

全部博文(226)

文章存档

2011年(5)

2010年(64)

2009年(99)

2008年(37)

2007年(21)

我的朋友

分类: LINUX

2007-11-26 18:50:59

sed 非交互文本流编辑器
可以随意编辑小的大的文本文件
有许多sed命令用来编辑和删除,一次性处理所有改变,可以节省了时间
可以在命令行输入sed命令,也可以在一个文件中写入命令,然后调用sed。
sed并不与初始文件打交道,它只操作一个拷贝,然后把所有的改动如果没有重定向到一个文件,将输出到屏幕

格式:
 sed [选项] sed命令  输入文件   实际命令使用单引号
 sed [选项]  -f   sed 脚本文件 输入文件
 sed 脚本文件 [选项] 输入文件
sed选项
n 不打印
c 下一个命令是编辑命令
f 正在调用脚本文件
sed -f myscript.sed input_file
========================================
sed 'some-sed-commands' inputfile> myoutfile
sed 浏览文件,缺省从第一行定位有两种方式定位文本:
(1)使用行号,可以是一个简单文件,或是一个行号范围
(2)使用正则表达式
x-----表示行号
x,y标识行号范围从x到y
/pattern/   查询包含模式的行
/pattern/pattern/ 查询包含两个模式的行。
pattern/,x   在给定的行查找包含模式的行
x,/pattern/ 通过行号和模式查询匹配行
x,y!查询不包含行号x,y的行

sed -n '2p'   filename打印文件第2行
sed -n '1,3p' filename 打印1-3行
sed -n '/pattern/'p filename 打印匹配行
sed -n '4,/pattern/'p filename 打印第4行匹配的行
sed -n '/\$/'p filename
sed -n '1,$p' filename
sed -n '/.*ing'p filename
sed -n '$p' filename打印最后一行
sed -n '/music/=' 打印匹配的行号
sed -n -e /pattern/p -e /pattern/=
创建脚本:
#!/bin/sed -f
/company/ a\
Then suddenly it happened.
============================
#!/bin/sed -f
1 c\
   this is the change on line 1
   /evening/ i\
   insert a line
   $ c\
   change last line
==========================================
sed '1d'filename 删除第一行
sed '$d' filename 删除最后一行
=========================================
sed 替换模式
s/pattern-to-find /replacement-pattern/[g p w n]
g 替换全局所有模式
p 缺省sed将所有替换行写入标准输出 加p使-n选项无效
w 文件名 将输出定向到另一个文件
sed 's/night/NIGHT/' fileName 查询night,用NIGHT替换它。
sed 's/\$//' fileName 删除$元符号
sed 's/The/Now/g' fileName 全局替换
sed 's/splient/SPLIENT/w sed.out' fileName
sed -n 's/test/"test"  &p'fileName
sed '1,2 w fileName2' fileName  输入filename的前两行到filename2中
sed '/company./r filename1' filename2 将filename1 附加到filename2的company后
sed '/.a.*/q' filename 查询首次出现的模式然后退出
sed -n '1,$l' filename 显示文件的控制字符
cat sql.txt|sed 's/--*//g'|sed '/^$/d'|sed '$d'|sed '1d'|awk '{print $1}'
从命令行向sed传值
echo $Name |sed "s/go/$Repalce/g"
‘s / \ . $ / / g’ 删除以句点结尾行
‘-e /abcd/d’ 删除包含a b c d的行
‘s / [ ] [ ] [ ] * / [ ] / g’ 删除一个以上空格,用一个空格代替
‘s / ^ [ ] [ ] * / / g’ 删除行首空格
‘s / \ . [ ] [ ] * / [ ] / g’ 删除句点后跟两个或更多空格,代之以一
‘/ ^ $ / d’ 删除空行
‘s / ^ . / / g’ 删除第一个字符
‘s /CO L \ ( . . . \ ) / / g’ 删除紧跟C O L的后三个字母
‘s / ^ \ / / / g’ 从路径中删除第一个\
‘s / [ ] / [ ] / / g’ 删除所有空格并用t a b键替代
‘S / ^ [ ] / / g’ 删除行首所有t a b键
‘s / [ ] * / / g’ 删除所有t a b键

阅读(561) | 评论(0) | 转发(0) |
0

上一篇:sort 命令

下一篇:VI编辑器使用

给主人留下些什么吧!~~