文本处理工具
1 grep
-
全称: [Globally search a Reguler Expression and Print]
-
grep -E 和 egrep 等同的
-
grep格式
-
grep + 匹配条件 + 处理文件
cd /mnt
vim passwd #将/etc/passwd中的部分内容放入passwd中
grep root passwd #过滤root关键字
grep ^root passwd #以root开头
grep root$ passwd #以root结尾
grep -i root passwd #忽略大小写
grep -E “<root” passwd #root字符之前不能有字符
grep -E “root>” passwd #root字符之后不能有字符
grep -数字 #显示过滤行以及上面几行和下面几行
grep -n #显示匹配的行所在行号
grep -A #显示过滤行以及下面几行
grep -B #显示过滤行以及上面几行
grep -v #反向过滤
- grep字符数量匹配规则
- ^root #以westos开头
in$ #以westos结尾
s…n #s开头n结尾中间2个字符
…n #n结尾前面3个字符
-
{n} #n次
-
{m,n} #m到n次
-
{0,n} #0-n次
-
{,n} #0-n次
-
{m,} #最少m次
-
(lxy){2} #lxy字符串出现2次
-
练习:
请显示系统中能被su命令切换的用户名称
2 sed
-
命令格式:
-
sed 参数 命令 处理对象
-
sed 参数 处理对象 -f 处理规则文件
-
对字符的处理
p #显示
sed -n 5p westos #显示第五行
sed -n 3,5p westos #显示三到五行
sed -ne “3p;5p” westos #显示3和5行
sed -ne 1,5p westos #1-5行
sed -ne ‘5,$p’ westos #5到最后一行
sed -n ‘/^#/p’ fstab #显示以#开头的行
-
d #删除
sed 5d westos #删除第五行
sed ‘/^#/d’ fstab #把#开头行删除
sed ‘/^UUID/!d’ fstab #除了UUID以外的行都删除
sed -e ‘5,$d’ westos
-
a #添加
sed -e ’ $ a hello world’ fstab
sed -e ‘$ a hello\nworld’ fstab
sed -e ‘/^#/a hello world’ fstab
-
c #替换
sed -e ‘/^#/c hello world’ fstab
sed ‘5chello world’ westos
-
w #把符号的行写到指定文件中
sed ‘/^UUID/w westosfile’ westos #把westos中UUID开头的行写入westosfile中
-
i #插入
sed ‘5ihello westos’ westos
-
r #整合文件
sed ‘5r haha’ westos
sed字符替换
sed ‘s/ : /###/g’ westos
sed ‘s/ : /###/’ westos
sed ‘s/ : /###/g’ westos
sed ‘1,5s/ : /###/g’ westos
sed ‘1s/ : /###/g’ westos
sed ‘1s/ : /###/g;5s/ : /###/g’ westos
sed ‘s/ \ //####/g’ westos
sed ‘s@/@####@g’ westos
sed ‘s@/@####@g’ -i westos 把sed处理的内容保存到westos文件中
- 练习及脚本
Apache_port.sh
此脚本后介入数字
http的端口就改为此数字
假设selinux为关闭状态
3 awk
awk -F 分隔符 BEGIN{}{}END{} FILENAME
NR #行数
NF #列数
FILENAME #文件名称本身
westos #westos变量值
“westos” #westos字符串
/bash$/ #条件
/条件1|条件2/ #条件1或者条件2
/条件1/||/条件2/ #条件1或者条件2
/条件1/&&/条件2/ #条件1并且条件2
$0 #所有的列
$1 #第一列
$2 #第二列
$3 #第三列
#/etc/passwd文件的第六列没有home关键字并且以bash结尾的行
awk -F : ‘KaTeX parse error: Expected ‘EOF’, got ‘&’ at position 10: 6!~/home/&̲&/bash/{print}’ /etc/passwd