189 8069 5689

shell正则表达二-创新互联

shell正则表达 二部分

创新互联建站专注于企业成都营销网站建设、网站重做改版、彝良网站定制设计、自适应品牌网站建设、H5开发商城网站制作、集团公司官网建设、成都外贸网站制作、高端网站制作、响应式网页设计等建站业务,价格优惠性价比高,为彝良等各大城市提供网站开发制作服务。

shell正则表达二

一、printf命令:

1. 格式化输出。(print  format)

2. 命令格式:

printf'打印格式'实际内容

shell正则表达二

1. 打印格式:

1) \a(警告声音输出)

shell正则表达二

1) \b(退格键)

shell正则表达二

1) \n(输出新的一行)

shell正则表达二

1) \r(帧处于行的开始,即enter键)

shell正则表达二

\t(水平的table键)

shell正则表达二

1) \v(垂直的table键)

shell正则表达二

1) \xNN(x为ASCII码十六进制表示;NN为俩位数数字;可转换数字成为字符)

shell正则表达二

1) %ns(n为数字;s代表string,即多少个字符)

shell正则表达二

1) %ni(n为数字;i代表integer,即多少整数字符)

shell正则表达二

1) %N.nf(n、N为数字;f代表floating浮点,小数字数即小数点)

shell正则表达二

1. 例子:

1) 以整数形式输出23并换行,以字符串形式输出hello并换行

shell正则表达二

以2位整数形式输出23并换行,以7位字符串形式输出hello

shell正则表达二

案例文本

shell正则表达二

输出结果没有对齐

shell正则表达二

如上,可设置字段格式使之对齐(字符串长度、整数及小数点长度)

二、awk命令:

三、awk 则比较倾向于一行当中分成数个字段来处理。

.awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来输出数据。

1) 命令行方式

awk   [-F  field-separator]  'commands'  input-files

[-F  field-separator],域分隔符,默认为空格或tab;

commands为awk命令;input-files为待处理文件。

Linux系统使用环境变量IFS存储分隔符;

shell正则表达二

查看默认分隔符

shell正则表达二

oldIFS=$IFS(把环境变量IFS存到oldIFS)

IFS=","(定义分隔符为,)

shell正则表达二

之后把环境变量返回原值(空格/tab)。

1) shell脚本方式

shell正则表达二

1) 将awk命令插入一个单独文件,然后调用

Awk -f awk-script-file input-files

其中,-f选项加载awk-script-file中的awk脚本,input-files跟上面的是一样的。

1) 正则表达式用作awk_pattern: /regexp/

例如:awk '/ ^[a-z]/' input_file

2) 布尔表达式用作awk_pattern,表达式成立时,触发相应的actions执行。

① 表达式中可以使用变量(如字段变量$1,$2等)和/regexp/

② 布尔表达式中的操作符:

关系操作符: < > <= >= == !=
匹配操作符: value ~ /regexp/ 如果value匹配/regexp/,则返回真
value !~ /regexp/ 如果value不匹配/regexp/,则返回真
例如: awk '$2 > 10 {print "ok"}' input_file
      awk '$3 ~ /^d/ {print "ok"}' input_file

③ &&(与) 和 ||(或) 可以连接两个/regexp/或者布尔表达式,构成混合表达式。!(非) 可以用于布尔表达式或者/regexp/之前。

a) 正则表达式(/regexp/)

shell正则表达二

取passwd中小写字母a到d开头的。

a) 布尔表达式

变量(如字段变量$1  $2)和/regexp/;

关系操作

shell正则表达二

符: < > <= >= == !=

提取test.txt中chinese大于75为优秀。
匹配操作符: value ~ /regexp/ 如果value匹配/regexp/,则返回真
value !~ /regexp/ 如果value不匹配/regexp/,则返回真;

shell正则表达二

提取passwd中匹配d开头的显示ok。

a) &&(与)、||(或)

 shell正则表达二

模式包括两个特殊字段 BEGIN和END。使用BEGIN语句设置计数和打印头。BEGIN语句使用在任何文本浏览动作之前,之后文本浏览动作依据输入文本开始执行。END语句用来在awk完成文本浏览动作后打印输出文本总数和结尾状态标志。

1) 动作:

实际动作在大括号{ }内指明。动作大多数用来打印。

1. awk的运行过程:

如果BEGIN 区块存在,awk执行它指定的actions。

awk从输入文件中读取一行,称为一条输入记录。(如果输入文件省略,将从标准输入读取)

awk将读入的记录分割成字段,将第1个字段放入变量$1中,第2个字段放入$2,以此类推。$0表示整条记录。

把当前输入记录依次与每一个awk_cmd中awk_pattern比较,看是否匹配,如果相匹配,就执行对应的actions。如果不匹配,就跳过对应的actions,直到比较完所有的awk_cmd。

当一条输入记录比较了所有的awk_cmd后,awk读取输入的下一行,继续重复步骤③和④,这个过程一直持续,直到awk读取到文件尾。

 当awk读完所有shell正则表达二的输入行后,如果存在END,就执行相应的actions。

1) /etc/passwd文件 显示文件中用户名和登录shelshell正则表达二

显示文件中用户名和登录shell,中间以逗号分隔

shell正则表达二

显示文件中UID大于500的所有用户的用户名和登录shell

shell正则表达二

显示/etc/passwd文件中的UID大于500的用户名和登录shell,而账户与shell之间以逗号分割,而且在所有行添加列名name,shell,在最后一行添加"blue,/bin/nosh"。

shell正则表达二

函数及脚本的综合应用

1、shell函数:shell允许将一组命令集或语句形成一个可用块,这些块称为shell函数。

 函数由两部分组成:函数标题、函数体。标题是函数名。函数体是函数内的命令集合。标题名应该唯一;如果不是,将会混淆结果,因为脚本在查看调用脚本前将首先搜索函数调用相应的shell。

shell正则表达二

shell正则表达二

另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。


网页名称:shell正则表达二-创新互联
转载来源:http://cdxtjz.cn/article/dodghj.html

其他资讯