分类: 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键