shell 字符串的查找与替换

发布时间:2020-10-15编辑:脚本学堂
本文介绍下,有关shell编程中,字符串查找与替换的一些知识,有需要的朋友参考下。

本节学习shell/ target=_blank class=infotextkey>shell脚本中有关字符串的查找与替换的方法。

1,字符串的查找
a.grep:能使用基本的正则表达式
b.egrep:能使用扩展的正则表达式 = grep -E
c.fgrep:匹配固定的字符串而非正则表达式
 
2,meta字符
.*代表“匹配任一字符的任意长度”,*若置于正则表达式的第一字符,不具有任何特殊意义
^符号置于[]中的第一个字符表示反向的意思
{n,m}:匹配他前面单个字符的重复出现的次数的区间 {3}表示至少三次
( ):讲(与)间的模式存储在特殊的保留空间
 
3,后向引用
首先,将子表达式包含在( )中。最多包含9个子表达式
然后,使用digit digit可以是1-9,表示与先前第digit个子表达式匹配
例子:
e(ch)o.*1表示,当遇到echo时,把ch保存在内存中,并编号为1,之后,可以有0个或者多个字符。当再遇到ch时,匹配到一个
 
4,grep,sed实例
 

grep -v "^$" trace1.sh  去除空白行
sed 's/:.*//' /etc/passwd | sort -u 删掉第一个冒号后面的所有字符,删除重复的行然后排序
find /home/zhangh -type d -print | 寻找所有的目录
sed 's;/home/zhangh;/home/lih;' | 字符替换
sed 's/^/mkdir /'                | 在每行的开头添加mkdir

5,cut的使用
 

cut -d : -f 1,5 passwd     --分隔符为:,取第1,5列的数据
cut -d: -f 3- /etc/passwd  --从第三个字段开始显示,直到最后一个字段
cut -c1 -4,5 /etc/passwd   --取每行的1-4和第5个字符

6,linuxjishu/13830.html target=_blank class=infotextkey>awk
awk 用于处理字段与记录,awk将每条记录内的字段数目,存储在内建变量NF中。
例如:
 

复制代码 代码示例:
awk -F : '{print $1,$5}' /etc/passwd

有关awk的文章,请参考:
awk应用实例(经典awk例子)
awk变量应用实例
学习awk的内置函数
AWK 简介与例子