Sed
- 管线命令,可以分析standard input
- 数据的取代,删除,新增,撷取
删除
nl /etc/passwd|sed '2,5d'
#d,表示delete删除第2到5行
nl /etc/passwd|sed '3,$d'
#删除第三行到最后一行
新增
nl /etc/passwd|sed '2a drink tea'
#a,在第2行后,也就是第3行加上‘drink tea’,新增的一行
nl /etc/passwd|sed '2i drink tea'
#i, 在第2行前
nl /etc/passwd|sed '2a' Drink tea or\
any coffee?'
用来把运行结果打印成添加相关描述的样子
以行为单位的取代,显示
nl /etc/passwd|sed '2,5c No 2-5 number'
#把2-5行取代为‘No 2-5 number,仅显示一行’
nl /etc/passwd|sed -n '5,7p'
#仅列出5到7行
部分数据的搜寻和取代
/sbin/ifconfig eth0|grep 'inet addr'|\
>sed 's/^.*addr://g'|sed 's/Bcast.*$//g'
- #/sbin/ifconfig eth0:取得
- grep取出关键行数据: inet addr:192.168.1.100 Bcast:192.168.1.255 Mask:255.255.255.0
- sed’s/要被取代的字段/新的字段/g’: 删除了inet addr:和Bcast后的部分
cat /etc/man.config | grep 'MAN'| sed 's/#.*$//g' | \
> sed '/^$/d'
取出关键词为MAN并没有注释符号的行,
删除空行
注:这些操作都是提取数据,并没有给源文件造成变化
sed -i '$a # This is a test' regular_express.txt
在regular_express.txt最后加上“”This is a test“”