分类: LINUX
2009-03-23 07:54:25
sed 命令关键字:
p 表示打印,必须与 -n 一起使用
= 表示显示定位行的行号
a\ 附加新文本
i\ 插入新文本
c\ 用新的文本
d 删除定位行
s 表示替换模式
g 表示粘贴模式
1. 用sed匹配模式:
sed -n '1p' test 匹配第一行
sed -n '3,5p' test 匹配三到五行
sed -n '$p' test 匹配最后一行
sed -n '/zhaohang/p' test 匹配包含 zhaohang 的行
sed -n '/zhaohang/!p' test 匹配不包含 zhaohang 的行
sed -n '/\$/p' test 匹配包含元字符 $ 的行
sed -n '/zhaohang/=' test 打印包含 zhaohang 的行所在行的编号
sed -e '/zhaohang/=' test 打印全部文本,并将包含 zhaohang 的行的行号打印出来
一个准确匹配并替换的范例:
cat file
PURPLEMONTH = 88
PURPLEMONTHDAYSTART = 99
sed -n '/PURPLEMONTH\>/p' file
PURPLEMONTH = 88
sed '/PURPLEMONTH\>/ c\PURPLEMONTH = 8888' file
PURPLEMONTH = 8888
PURPLEMONTHDAYSTART = 99
2.插入文本和附加文本:
sed '/sleep/i\This is a test.' test 在包含sleep的行前插入一行 “This is a test”
sed '/sleep/a\This is a test.' test 在包含sleep的行后附加一行 “This is a test”
sed '/sleep/r killpid.sh' test 在test文件的包含sleep的行后插入killpid.sh文件里的所有内容
sed '/zhaohang/i\zhaohang' test 在包含“zhaohang”的行前插入一行 “zhaohang”,不改变原文件
sed '/zhaohang/i\zhaohang' -i test 在包含“zhaohang”的行前插入一行 “zhaohang”,在原文件里直接修改
sed '5 i\ 123' -i test 在第5行之前插入一新行,内容为123
sed '$ a\ 123' -i test 在最后一行之后附加一行 123
3.删除文本
sed '/zhaohang/d' test 删除包含 zhaohang 的行
sed '$d' test 删除最后一行
sed '1d' test 删除第一行
sed '/^$/d'test 删除空行
sed '8,9d' test 删除8 9 行
cat test|tr -d 1,2|sed s/^[[:space:]]*//g 删除文件前两列
cat test|tr -d 2|sed 's/\t\t/\t/' 删除文件第二列
sed '/muahao/,+2d' file 删除匹配行及下方两行
4.替换文本
sed '/sleep/c\SLEEP=60' test 找到包含sleep的行,并删除该行,用新文本SLEEP=60替换该行文本
sed 's/lovely/Lovely.he/g' test > test.txt 将lovely替换为Lovely.he,并将修改后内容输出到test.txt,原test文件内容不做修改
sed -e '/subject_round/s/1/0/g' -i test 修改包含subject_round的行里的“1”为“0”
sed -e '/sub/s/1/0/' -e '/foun/s/1/0/' -i test 修改包含sub和foun的行里的“1”为“0”
sed 's/user/USER/' /etc/passwd 将第1个user替换成USER,g表明全局替换
sed 's/user/USER/g' /etc/passwd 将所有user替换成USER
sed '/=m$/s/^/#/g' filename 将=m结尾的行注释掉
sed '3,5 s/^/#/' filename 将3-5行注释掉
sed '10 s/^/#/' filename 将第10行注释掉
echo JR-TJ07-GWServer01 |sed 's/GW.*$/config/g' 将后半部分任意字符替换,打印出 JR-TJ-config
5.下面是一些命令集,sed 无法识别的原字符可以用 \ 来屏蔽。
's/\.$//g' 删除以句点结尾行
cat txt|tr -s ' ' 删除一个以上空格,用一个空格代替
cat txt|tr -s ' '|sed s/^.//g 删除行首空格
cat txt|sed s/^[[:space:]]*//g 删除行首空格
'/^$/d' 删除空行
's/^.//g' 删除第一个字符
's/COL\(...\)//g' 删除紧跟COL的后三个字母
's/^\///g' 从路径中删除第一个\
for i in `cat tmp.txt|grep -v ^$|tr -s ' '|sed s/^.//g`;do echo \'$i\',;done 将文件格式化
cat txt|tr -d '\n' 删除换行
6、一些稍微复杂的处理应用:
sed '/
sed '// a\\t\t\n\t\t95<\/xiaoyaodao_mapid>' -i game.xml
sed '/(删除配置文件中多余的空行,用<过滤,将不包含此符号的行删除!)
cat my.txt|sed s/a/A/2 >n.txt 指定第二列,将1.txt文件中包含a的第二列中的a替换为A,并将结果写入n.txt文件中。