sed
sed不同于vi,vim这两种文本编辑工具,sed是一个流编辑工具,也叫行编辑工具。
s 搜索暂换 (推荐!)
g 全局暂换
p 只输出被暂换的信息,配合-n使用
w 保存 (推荐!)
sed 's#\/sbin\/nologin#\/bin\/bash#g' /etc/passwd 把passwd里的/sbin/nologin全部换成/bin/bash
sed 's#\/sbin\/nologin#\/bin\/bash#gp' /etc/passwd 同上暂换效果,但只输出被暂换的行
sed 's#\/sbin\/nologin#\/bin\/bash#gw /root/pass' /etc/passwd 全部输出并保存到/root/pass,可以理解为另存为
d 删除匹配指令的行
举例
sed '/^#/d ; /^$/d' /etc/passwd 不显示注释行和空行
sed '/^$/d' /etc/passwd 删除空白行
sed '1d';'2d' /etc/passwd 删除1,2行
-n 关闭sed的默认输出,也就是指定输出行
举例
sed '10,15p' /etc/passwd 输出passwd 10到15行输出两遍
sed -n "10p";"11p" /etc/passwd 输出第10,11行
sed -n '/^#/p' /etc/fstab 输出非注释行
范围匹配:
举例
sed -n '1,5p' /etc/passwd 输出1~5行
sed -n '1,$p' /etc/passwd 输出1~最后一行
sed -n '/root/p' /etc/passwd 输出包含root的行
sed -n '3,/^m/p' /etc/passwd 输出第3行到m开头的行
i 插入操作 在行前,另起一行
举例
sed '1i#' /etc/passwd 在第一行上插入#
sed '/root/i#' /etc/passwd 在文件中root开头的行上插入#
a 插入操作 在行后,另起一行
举例
sed '1a#' /etc/passwd 在第一行下插入#
w 写入(覆盖)文件
举例
sed -n '/nologin$/w /root/f1' /etc/passwd
把passwd中以nologin结尾的行写入到/root/f1文件中
r 读入(追加)文件
举例
sed '/^root/r /root/f1' /etc/passwd 把/root/f1文件内容读入到/etc/passwd文件以root开头的行
sed 'r /root/f1' passwd 把/root/f1文件内容读入到/etc/passwd文件每一行后面
c 暂换 行
举例
sed "1c\hallo,word" /etc/passwd 把第四行信息替换为“hallo,word” sed -r
"/^root/c\hallo,word" 把正则匹配到的行暂换为“hallo,word”
grep
-V 反选
举例: grep -V root /etc/passwd 列出不包括root的行
-n 显示行号
-e 多个条件 比如:grep -e 'root' -e 'test' /etc/passwd
-o 仅显示匹配的字符
-w 显示匹配的单词
-i 忽略大小写搜索单词
-c 统计匹配信息的次数
-E;egrep 扩展正则
-A 输出匹配的信息和之后?行的信息
-B 输出匹配的信息和之前?行的信息
-C 输出匹配的信息和前后各?行的信息