grep和sed使用

基本的正则匹配规则

. 代表任意一个字符(除了换行符), 对应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  # 直接修改文件内容
posted @ 2023-02-15 10:17  影随风动91  阅读(61)  评论(0编辑  收藏  举报