用途
sed, 流编辑, 可以用来分析standard input, 还可以将数据进行取代, 删除, 新增, 取特定行.
用法
sed -nefr action
选项与参数:
-n: 在一般sed用法中, 所有来自stdin的数据一般都会被列出到屏幕上, 但如果加上-n参数, 则只有经过sed特殊处理的那一行(或动作)才会被列出来.
-e: 直接在指令列模式上进行sed的动作编辑
-f: 直接将sed的动作写在一个档案内, -f filename 则可以执行filename内的sed动作
-r: sed的动作支持的延伸型正则表示法的语法
-i: 直接修改读取的档案内容, 而不是有屏幕输出
动作说明: [n1, n2]function
a: 新增, a的后面可以接字符串, 这些字符串会在新的一行出现(目前的下一行)
c: 取代, c后面可以解字符串, 这些字符串可以取代n1, n2之间的行
i: 插入, i的后面可以接字符串, 这些字符串会在新的一行出现(目前的上一行)
p: 打印, 将某个选择的数据印出(通常与-n一起)
s: 取代, 可以直接进行取代(通常搭配正则表示法)
示例
1. 将/etc/passwd的内容列出并打印行号, 同时, 删除第2~5行
nl /etc/passwd | sed '2,5d'
2. 承上题, 在第二行后加上'drink tea'字样
nl /etc/passwd | sed '2a drink tea'
3. 在第二行前增加多行
nl /etc/passwd | sed '2a Drink tea or ...> drink beet?'
4. 将第2-5行的内容取代为'No 2-5 number'
nl /etc/passwd | sed '2,5c No 2-5 number'
5. 仅列出第5-7行
nl /etc/passwd | sed -n '5,7p'
<未完>