5.15 sed介绍
ü sed不与初始化文件打交道,它操作的只是一个拷贝,然后所有的发动如果没有重定向到一个文件,将输出到屏幕。
ü sed是一种重要的文本过滤工具,使用一行命令或者使用管道与grep与awk相结合。
ü 非交互性文本流编辑。
ü 调用sed有三种格式:
l 使用sed命令格式为:
sed [选项] sed命令 输入文件。
l 使用sed脚本文件,格式为:
sed [选项] –f sed脚本文件 输入文件
l sed 脚本文件 [选项] 输入文件
l 不管是使用shell命令行方式或脚本文件方式,如果没有指定输入文件,sed从标准输入中接受输入,一般是键盘或重定向结果。
ü Sed命令选项如下:
l -n 不打印
l -c 下一命令是编辑命令
l -f 如果正在调用sed脚本文件
ü Sed在文件中查询文本的方式
l 使用行号,可以是一个简单的数字,或是一个行号范围
l 使用正则表达式
X | X为一行号 |
X,Y | 表示行号范围从X到Y |
/pattern/ | 查询包含模式的行 |
/pattern/pattern/ | 查询包含两个模式的行 |
Pattern/,X | 在给定行号上查询包含模式的行 |
X,/pattern/ | 通过行号和模式查询匹配行 |
X,Y! | 查询不包含指定行号X和Y的行 |
l 基本sed编辑命令
p | 打印匹配行 |
= | 显示文件行号 |
a\ | 在定位行号后附加新文本信息 |
i\ | 在定位行号后插入新文本信息 |
d | 删除定位行 |
c\ | 用新文本替换定位行文本(替换整行) |
s | 使用替换模式替换相应模式(替换文本) |
r | 从另一个文件中读文本 |
w | 写文本到一个文件 |
q | 第一个模式匹配完成后推出或立即退出 |
l | 显示与八进制ASCII代码等价的控制字符 |
{} | 在定位执行的命令组 |
n | 从另一个文件中读文本下一行,并附加在下一行 |
g | 将模式2粘贴到/pattern n/ |
y | 传送字符 |
例:
sed ‘2p’ score.txt
sed -n ‘2p’ score.txt
sed -n ‘2,10p’ score.txt
sed -n ‘/qihongjun/’ score.txt
sed -n ‘4,/qihongjun/’ score.txt
sed ‘/oracle/a\baobao’ score.txt 追加 在oracle 的下一行
sed ‘/oracle/i\baobao’ socre.txt 插入 在oracle的上一行
sed ‘/oracle/c\baobao’ score.txt 替换整行
sed ‘s/oracle/qihongjun/’ score.txt 替换文本
sed ‘s/qihongjun/& hujing/p’ passwd 将hujing qihongjun 的后面
sed ‘s/qihongjun/hujing &/p’ passwd 将hujing qihongjun 的前面
5.16合并与分割
Ø Sort [ options ] files
n 许多不同的域按不同的列顺序分类。
n -c 测试文件是否已经分类
n -m 合并两个分类文件。
n -u 删除所有复制行。
n -o 存储sort 结果的输出文件名。
n -t 域分隔符;用非空格或tab键分隔域。
n +n n为域号,使用此域号开始分类。
n n 指定分类是域上的数字分类项。
n -r 比较求逆。
Ø man sort
Ø uniq [ options ] files
n 从一个文本文件中去除或禁止重复行
n -u 只显示不重复行
n -d 只显示有称重复数据行,每种重复行只显示其中一行。
n -c 打印每一重复行出现次数
n -f n为数字,前n个域被忽略。
Ø man uniq
Ø split 分割文件
n split -10 passwd word
转载于:https://blog.51cto.com/hongjun/387842