sed工具介绍
sed 可以分析标准输入的数据,然后将数据经过处理后,再将它输出到标准输出。它有替换,删除,
新增,选取特定行等处理功能。
语法:sed [options] PATTERN/COMMAND files...
sed [options] ADDR1,ADDR2/COMMOND files...
选项:1.-n 使用安静模式。在一般sed的用法中,所有来自STDIN的数据一般都会显示在屏幕上,但如果
加上-n,则只有经过sed特殊处理的那一行才会列出来
举例分析:
sed -n /cache/p /proc/cpuinfo(输出含有cache的行,使用-n 可以避免输出没有被模式匹配到
的行)
sed 1,3p /proc/cpuinfo (输出前三行,默认是匹配到的输出2次,没匹配到的输出1次)
sed -n 1,3p /proc/cpuinfo (使用-n ,则只输出匹配到的行,且仅仅输出一次)
2.-e 允许多项编辑
举例分析:
sed -e '1,$s/\b[Cc][[:alpha:]_]*\b/&s/g' -e '1,$s/\bm\([[:alpha:]_]*\)\b/M\1/g'
/proc/cpuinfo(-e 允许多项编辑 在匹配到的内容后加s 把m变成M)
3.-i(可以修改原文,不要轻易使用,使用时必须慎重,要知道自己在做什么,否则后果很严重)
操作:1.a\ 新增,后接字符串,而这些字符串会在新的一行出现
举例分析:
sed "/^processor/a\this is my cpu." /proc/cpuinfo(在/proc/cpuinfo目录下的以processor
开头的行后添加一行this is my cpu)
2.p 打印,及打印某个选择的数据。通常p会和sed -n 一起运行
举例分析:
sed /cache/,/wp/p /proc/cpuinfo(打印以第一个含有cache的行开始,到第一个含有wp的行结尾
的所有的行)
3.d 删除匹配到的行,因为是删除,通常d后面不接任何内容
举例分析:
sed ‘2,5d’/etc/passwd (删除/etc/passwd下的第2行到第5行)
sed /cache/d /proc/cpuinfo(删除/proc/cpuinfo下含有cache的行)
sed /^[Cc]/d /proc/cpuinfo (删除/proc/cpuinfo下以c或C开头的行)
4.i\ 插入,i的后面可以接字符串,这些字符串会在新的一行出现(当前行的上一行)
举例分析:
sed “/^model/i\#this is my cpu" \n /proc/cpuinfo(\n表示添加多行)
5.s 查找并替换。通常s操作可以和正则表达式一起使用
举例分析:
sed '1,$s/yes/YES/g' /proc/cpuinfo ($表示最后一行 将/proc/cpuinfo中第一行到最后一行
的所有yes换成YES)
sed '1,$s/\bc/C/g' /proc/cpuinfo (\b跟/<作用一样 将/proc/cpuinfo中第一行到最后一行
的所有以c开头的单词换成以C开头。g表示全局替换,如果旧内容出现多次,则全都替换成
新内容))
& 保存查找串以便在替换串中引用
举例分析:
sed '1,$s/\b[Cc]\b/&s/g' /proc/cpuinfo(以c开头的所有单词后加s)
关于sed的小练习:
练习1:将/etc/inittab文件中以id开头后面跟了两个冒号且两个冒号之间有一个数字的那一行中那
两 个冒号间的数字改为3
答案:
sed ‘1,$s/^id:[0-9]:'/id:3:/' /etc/inittab
练习2:将/etc/passwd文件中以n开头的所有单词的词首字母改为大写
sed '1,$s\/N\1/g' /etc/passwd
练习3:将/proc/meminfo文件中所有以HugePages开头的行后面添加“#For performance”一个新行
sed "/^HugePages/\a#For performance" /proc/meminfo
练习4:删除/etc/inittab文件中所有以#开头,或者以一些空白字符后跟一个#开头的行,并且将所
有以一个空格后跟一个数字结尾的行中的那个行尾的数改为0;
sed -e‘/^[[:space:]]*#/d' -e 's/ [0-9]$/ 0/' /etc/inittab
阅读(1489) | 评论(0) | 转发(0) |