shell脚本里面的正则和python里面某些地方有点小不同。
例如,python中a{4}代表4个a,但是shell里面a\{4\}要用脱义
a{3,4} a\{3,4}\
grep "^$" 代表空行
grep -c 统计行数
grep -C1显示上下两行-C2显示上下各两行
grep -A1显示下面一行,依上同理
grep -B1显示上面一行,依上同理
grep -r遍历目录下所有子目录
egrep(grep扩展模块)==grep -E
在grep里面不能直接用,要加脱义字符+ ?,但是egrep可以直接用
+表示一个或者多个 +前面的字符
?可有可无前面的字符
egrep ‘r(oo)|(at)t’
root 或者ratt
还有就是用egrep {2} {2,3}不用脱义这个跟python很像
但是在egrep里面可以用
uniqu -c除重,在之前必须用sort排序才行
-u 只显示唯一的行(不重复的行)
split -b 1M filename根据文件大小进行切割
sed -n '1,$p' filename 显示1到最后一行
匹配 sed -n '/root/p' filename 显示有root的行
和grep比较类似要加脱义字符 sed -n '/root\+/p' filename
一般主要用在删除和替换上
sed -n '10d' filename 删除第10行
sed -n '/root/d' filename 删除包含root的行,但是不会改变原文件,只是会把改变后的文件输出而已
sed -i 会改变原文件(慎用这个参数)
sed 's/root/bash/g' filename 用root替换 bash 跟vim 中用法是一致的
sed ‘s/[0-9]//g’ filename 把数字都删掉
字段颠倒
sed 's#(第一段)(二段)(三段)#\3\2\1# 变成(三段)(二段)(一段)这种形式
awk -F ':' 'print{$1}' filename 以:分割 打印出第一列
'print{$1,$3}' 打印第一列和第三列
'print{$0}' 表示整行
awk -F ':' '$1~/root/' filename 用第一列去匹配 root
awk -F ':' '$1==10 ' filename第一列的数值等于10的才匹配出来
'print{NR}' NR表示行号
awk -F ':' '$1==“/bin/bash” ' filename
awk -F ':' '$1=$3+$4” ' filename
$NF 表示最后一列