3,2 常用编辑命令
对文件内容的编辑命令 | 说明 |
---|---|
d | 删除匹配的行 |
p | 打印匹配到的行 |
a文本内容 | 将文本内容添加到匹配行的下一行 |
i文本内容 | 将文本内容添加到匹配行的上一行 |
c文本内容 | 用文本内容替换匹配到的所有行 |
r | 读入文件内容追加到匹配行的后面 |
R | 读入文件一行的内容追加到匹配行的后面 |
w /dir/filename | 将匹配行的内容另存到/dir/filename中 |
s /pattern/replacement/flag | 根据正则表达式进行匹配,将匹配到的内容替换为replacment, flag可以指定 g(表示全局替换,默认只替换每行第一个), num1(表示) |
示例:
生成测试文件
shell
sed -e '\#adm#,$#:#@@@#g' testfile
a)删除行
shell
sed '1d' testfile
sed '$d' testfile
sed '/root/d' testfile
sed '/root/! d' testfile
b)显示行
shell
sed -n '1p' testfile
sed -n '$p' testfile
sed -n '/root/p' testfile
sed -n '/root/! p' testfile
c)添加,插入,替换行
shell
sed '1ahello world' testfile
sed '$ahello world' testfile
sed '/adm/ahello world' testfile
sed '/adm/ihello world' testfile
sed '/adm/! ihel1o\nworld' testfile
d)整合文件
shell
vim numfile1
1
2
6
vim numfile2
2
3
4
sed '1rnumfile2' numfile1
sed '1Rnumfile2' numfile1
e)保存处理结果
shell
sed '/root/w file' testfile
cat file
root: x: 0:0: root:/root:/bin/bash
f)字符替换
shell
sed 's/:/##/' testfile
sed 's/:/##/2' testfile
sed 's/:/##/g' testfile
sed 's/^./##/g' testfile
sed 's/^\< [a-z]*[a-Z \>//' testfile
sed 's/^\(...\)\(t\)/\2/g' testfile #元素向后引用
t: x: 0:0: root:/root:/bi n/bash