基本的正则匹配规则
. 代表任意一个字符(除了换行符), 对应bash中的?
[] 中括号,代表中括号内的一个字符,如[ae] [a-z] [0-9]
* 代表前一个字符0次或多次
{m,n} 表示次数m到n
grep 使用
gre -n 正则语法 文件名
grep hello regular.txt
grep g.*d regular.txt
sed使用
sed命令解析
sed [-nefr] [动作]
动作说明:[n1[,n2]] function
数字定址: n1,n2不一定存在,一般代表行号
正则定址: [动作s]/目标字符串[/替换字符串]/动作 [内容]
function有如下:
a: 新增
c: 替换
d: 删除
i: 插入
p:
s: 替换
查看
nl regular.txt | sed -n '1,5p' # 只查看5-7行,必须加上-n参数,表示安静模式
删除:
nl regular.txt | sed '1,2d' # 删除1,2行
nl regular.txt | sed '2,$' # 删除2到末尾
能使用正则删除吗?
nl /etc/passwd | sed '/root/d' # 删除有root的一行
新增:
nl regular.txt | sed '1/a add a new line' # 第一行后增加新行
nl /etc/passwd | sed '/root:x:/a add a new line' # 第一行后增加新行
替换:
行列:nl /etc/passwd | sed '2,5c No 2-5 Number'
正则:sed 's/要替换的字符串/新的字符串/g' g表示整行全部替换,不加g表示行内只替换一次
nl regular.txt | sed 's/^google/sun/g' # 将行开头的google替换成sun
操作文件
sed -i 's/^google/sun/g' regular.txt # 直接修改文件内容