1

sed中的正则

 1 year ago
source link: https://bajie.dev/posts/20221207-sed_regex/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Sed中的正则

2022-12-07 2 分钟阅读

之前说过sed的高阶用法,其实普通情况下,正则是最常用的,下面就来说一下,用不到的就暂时不说

^ # 匹配行开始,如:/^sed/匹配所有以sed开头的行。
$ # 匹配行结束,如:/sed$/匹配所有以sed结尾的行。
. # 匹配一个非换行符的任意字符,如:/s.d/匹配s后接一个任意字符,最后是d。
* # 匹配0个或多次字符,如:/a*sed/匹配所有模板是0个或多个a后紧跟sed的行。后紧跟sed的行。
\? # 匹配0次或1次他前面的字符
\+ # 匹配1次或多次他前面的字符,如:空格\+ 或 “\+“匹配至少一个或多个空格
| #管道符号用来匹配两边任意一个子表达式,如:'/101\|102/p' 匹配包含101或者102的行打印
[] # 匹配一个指定范围内的字符,如/[sS]ed/匹配sed和Sed。  
[^] # 匹配一个不在指定范围内的字符,如:/[^A-RT-Z]ed/匹配不包含A-R和T-Z的一个字母开头,紧跟ed的行。
\(..\) # 匹配子串,保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers。
& # 保存搜索字符用来替换其他字符,如s/love/ **&** /,love这成 **love** 。
\< # 匹配单词的开始,如:/\<love/匹配包含以love开头的单词的行。
\> # 匹配单词的结束,如/love\>/匹配包含以love结尾的单词的行。
\{m\} # 重复字符x,m次,如:/0\{5\}/匹配包含5个0的行。
\{m,\} # 重复字符x,至少m次,如:/0\{5,\}/匹配至少有5个0的行。
\{m,n\} # 重复字符x,至少m次,不多于n次,如:/0\{5,10\}/匹配5~10个0的行。  
javascript

例子很多:

用户名,后面跟1个或者多个空格,再跟密码;更换成用户名 密码 MAC地址

sed -i "s/${username} \+${password}$/${username} ${password} ${IV_HWADDR}/" ${PASSFILE}
fallback

跟 shell 脚本的参数一起记比较好:

$0 脚本本身的名字
$1 传递给该shell脚本的第1个参数
$2 传递给该shell脚本的第2个参数
$@ 传给脚本的所有参数的列表
$# 传给脚本的参数个数
$* 以一个单字符串显示所有向脚本传递的参数,与位置变量不同,>参数可超过9个
$$ 脚本运行的当前进程ID号
$? 命令执行结果反馈,0表示执行成功,其余数字表示执行不成功。
shell

还有一个重要的地方,sed 使用 -i 对文件进行修改时,执行者需要有对文件目录的写权限,因为sed实际是产生了一个临时文件,然后再挪回去得!!!!


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK