查看: 1360|回复: 3
收起左侧

[教程经验] Shell脚本语法——脚本调试和正则表达式

Lihoon 2020-8-11 23:30:47 | 显示全部楼层 |阅读模式
邀请回答

马上注册,享受更多特权

您需要 登录 才可以下载或查看,没有帐号?立即注册   

x


01 shell脚本调试方法

1 调试脚本选项

-n——读一遍脚本中的命令但不执行,用于检查脚本中的语法错误

-v——一边执行脚本,一边将执行过的脚本命令打印到标准错误输出

-x——提供跟踪执行信息,将执行的每一条命令和结果依次打印出来

这些选项有三种常见用法:

(1)在命令行提供参数,如:

$ sh -x ./script.sh

(2)在脚本开头提供参数,如:

#! /bin/sh -x

(3)在脚本中用set命令启用或者禁用参数,如:

#! /bin/sh

if [ -z "$1" ]; then
    set -x                  <<==启用参数
    echo "error"
    exit 1
    set +x                  <<==禁用参数
fi

02 正则表达式

2 字符类

. ——匹配任意一个字符,如cod.可以匹配cod1、code等

[]    ——匹配括号中的任意一个字符,如[abc]d可以匹配ad、bd、cd等

-    ——在[]内表示字符范围(仅在中括号内有效),如[a-z]表示所有的小写字母

^ ——位于[]括号内的开头,匹配除括号中的字符之外的任意一个字符,

3 数量限定符

? ——紧跟在它前面的单元匹配0次或1次,=0或=1

+    ——紧跟在它前面的单元匹配1次或多次,>=1

*    ——紧跟在它前面的单元匹配0次或多次,>=0

{N}   ——精确匹配N次,=N

{N,}  ——至少匹配N次,>=N

{,M}  ——最多匹配M次,<=M

{N,M} ——匹配次数介于M-N之间,>M并切<N

4 位置限定符

^     ——匹配行首的位置,匹配内容位置限定为行首

$     ——匹配行末的位置,匹配内容位置限定为行末尾

\<    ——匹配单词开头的位置

\>    ——匹配单词结尾的位置

\b    ——匹配单词开头或结尾的位置,如\bat\b表示匹配at,其他单词均无法匹配

\B    ——匹配非单词开头或结尾的位置

例如,匹配IP地址的正则表达式为

egrep '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' test.regex 

egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$' filename

5 Basic正则和Extended正则

Basic正则——基础正则,字符?+{}|()等符号使用时均需要增加转义字符\,使用指令grep执行

Extended正则——扩展正则,使用执行egrep,egrep指令某系系统不支持,需要切换为grep -E 来执行

如:匹配IP地址的正则表达用扩展正则的写法是:

egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$' filename

用基础正则的写法是:

grep -E '^([0-9]{1,3}\.){3}[0-9]{1,3}$' filename

grep '^\([0-9]\{1,3\}\.\)\{3\}[0-9]\{1,3\}$' filename       # 含有大量转移符,不易读

6 综合实例

(1)使用vi新建测试文档test.regex,在文档中输入随机的字符组合,如下所示:

10.44.53.130
test
aa
bb
art
test
start
end
E2
R4
A1
B1
c1
d1
y1
.5
2.3
4.5
0.5
ee.yy.tte.cc
192.168.1.108
55g.445.45.64
huawei
tencent
dji

(2)在命令行调用egrep指令,搜索IP地址:

$ egrep '^([0-9]{1,3}\.){3}[0-9]{1,3}$' test.regex 
10.44.53.130
192.168.1.108

已有 0 人打赏作者

回复 邀请回答送花

使用道具 举报

zhuyi 2022-7-21 17:03:38 | 显示全部楼层
愿汇川:
                           欣欣向荣 大展鹏图

                           朝气蓬勃 一日千里

                           大展宏图 兴旺发达
回复 送花

使用道具 举报

依然 2022-8-13 10:16:32 | 显示全部楼层
感谢楼主分享
回复 送花

使用道具 举报

Patrical 2022-8-13 10:24:01 | 显示全部楼层
感谢分享这么好的资料
回复 送花

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册   

本版积分规则

有技术问题,就上汇川技术社区

INOVANCE汇川技术 公众号

扫码下载掌上汇川APP

全国服务热线:8:30-17:30

4000-300124

苏州地址:江苏省苏州市吴中区越溪友翔路16号

深圳地址:深圳市龙华新区观澜街道高新技术产业园汇川技术总部大厦

Copyright © 2003-2100 汇川技术 Powered by Discuz! X3.4 ( 苏ICP备12002088号 )
快速回复 返回列表 返回顶部