Linux学习-sed

Linux 使用过程中不常用命令sed。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
sed [-nefr] [动作]
选项与参数:
-n : 使用安静(silent)模式。没有此参数,所有来自stdin的数据都会显示出来;有了此参数,只有经过sed特殊处理的那一行才会显示出来
-e : 直接在命令模式下进行sed的动作编辑
-f : 直接将sed的动作写在一个文件内,-f filename则可以运行filename内的sed的动作
-r : sed的动作支持延伸型正则表示法(默认是基础正则表示法)
-i : 直接修改读取的文件内容,而不是由屏幕输出
动作:[n1[,n2]]function
n1,n2 : 非必须参数。如果我的动作需要在10到20行之间进行,则 10,20[动作行为]
function 有地下这些咚咚:
a : 新增,后面接的字符串会出现在新的一行(目前的下一行)
c : 取代,后面接的字符串会取代n1,n2之间的行
d : 删除
i : 插入,后面接的字符串会出现在新的一行(目前的上一行)
p : 列印
s : 取代

使用:

1
2
3
4
5
6
nl /etc/passwd | sed '2,5d'
nl /etc/passwd | sed '2a drink tea'
nl /etc/passwd | sed '2a Drink tea or .....\drinkbeer?'
nl /etc/passwd | sed '2,5c No 2-5 number'
nl /etc/passwd | sed -n 'sed 11,20p' //比较有用啊:head -n 20 | tail -n 10