- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Awk学习
主要语法
Awk –F”\t” ‘BEGIN{}{}END{}’
第一个例子:求文本的长度
Wc –l
Awk ‘END{print NR}’
NR和NF
第二个例子:输出第二列中有4的
awk -F\t {if($2~/4/){print $2}} log
也可以是
awk -F\t {if($2~/4/){print $2}} log
解析awk的结构
Awk –F”\t” ‘BEGIN{}{}END{}’
Aaa bbb ccc ddd 分隔和列
Awk调用脚本程序(例子)
Awk –f howlong.awk file
分隔符
Awk –F”\t”
awk ‘BEING{FS=”\t”}’
正则表达式
匹配:echo a b c|awk $0~b{print $2}
精准匹配:echo a b c|awk $2==b{print $2}
不匹配
以4开头:awk -F\t $2~^4 {print $2} log
以4结尾:awk -F\t $2~4$ {print $2} log
不匹配的:awk -F\t $2!~^4 {print $2} log
以4开头和结束的:awk -F\t $2~^4$2~4$ {print $2} log
参数的传递
例子:强行修改日期
Awk –f changedate.awk stat_date=2008-11-28 log
内置变量
NR NF
FILENAME:awk -F\t $2~^4$2~4$ {print FILENAME} log
ARGC:
Awk和shell中的字符串处理
分割字符串 split(“a||b||c”,abc,”||”)
长度函数 length(“abc”)
字串函数 substr($1,1,3)
Shell中的字符串处理
expr length abc
expr 6 / 2
expr substr 123 1 2
注意BEGIN,END和{}必须相连
注意awk和shell脚本中参数调用的区别 $
大例子:
CMCategory_pv.awk
Sed学习
例子1
删除最早的一个文件
ls -t|sed -n 1p|xargs rm
例子2
删除部分文件
Ls |sed ‘//d’ /xargs rm;
行操作
选择第1行:sed -n 1p text
最后一行:sed -n $p text
所有行:sed -n 1,$p text
中间有bbb的行:sed -n 1,/b/p text
行前加:Sed ‘1i helloworld’
行后加: ‘1a helloworld’
行替换: ‘1c helloworld’
单行操作:(g的作用)
替换:echo 2008-11-20-20|sed s/2008/2007/
文本前加:sed s/aaa/bbb /g text
文本后加:sed s/aaa/ bbb/ text
练习:
删除后缀:echo account.txt|sed s/.txt//
增加后缀:echo account|sed s/$/.txt/
参数传递:now=2009
echo 2008-11-20-20|sed s/2008/$now/
多个命令多个文件
echo 2008-11-20-20|sed -e s/...$// -e s/2008/2009/
先匹配,再操作
echo 2008-11-20-19|sed /2008/ s/2008/2009/
echo 2007-11-20-19|sed /2008/ s/2008/2009/
----------------------------------------------------------------------------------------------------------------------
一个实用的问题
用户输入日期:2008-12-02-19
我们解析出其中的日期和小时
Awk解法一: echo 2008-11-20-20|awk -F- {printf(%s-%s-%s\n,$1,$2,$3)}
Awk解法二:echo 2008-11-20-20|awk {date=substr($1,1,10); print date}
Sed解法一:echo 2008-11-20-20|sed s/-[0-9]\{2\}$//
引入另外一种东东
Cut的解法一:echo 2008-11-20-20|cut -d- -f 1-3
Cut的解法二:echo 2008-11-20-20|cut -c 1-10
Cut的用法用法:cut?-cnum1-num2?filename 说明:显示每行从开头算起
文档评论(0)