shell文本过滤编程(八):awk之内置函数

来源:互联网 发布:mongodb 书籍 知乎 编辑:程序博客网 时间:2024/05/18 00:16

【版权声明:转载请保留出处:blog.csdn.net/gentleliu。Mail:shallnew at 163 dot com】

这一节来见识一下a w k许多强大的字符串函数及其使用方法。

1、 sub 和 gsub函数:
用法:sub( Ere, Repl, [ str ] )
gsub( Ere, Repl, [ str ] )
在第三个参数给出字符串中查找满足Ere 参数指定的扩展正则表达式的字符串,并使用第二个参数替换之。如果未指定 In 参数,缺省值是整个记录($0 记录变量)。Sub函数替换第一个符合模式的字符串,gsub会替换所有符合模式的字符串。
# awk 'BEGIN{buf="Hello,awk! there is awktutorial!";sub(/awk/, "world", buf); print buf}'Hello,world! there is awk tutorial!# echo "Hello,awk! there is awk tutorial" | awk'{sub(/awk/, "world"); print $0}'Hello,world! there is awk tutorial# awk 'BEGIN{buf="Hello,awk! there is awktutorial!";gsub(/awk/, "world", buf); print buf}'Hello,world! there is world tutorial!# echo "Hello,awk! there is awk tutorial" | awk'{gsub(/awk/, "world"); print $0}'Hello,world! there is world tutorial#
2、 index函数
index( String1, String2 );
在第一个参数string1中查找字符串string2,返回首次出现的位置。
# echo "Hello,awk! there is awk tutorial" | awk '{printindex($0, "awk")}'7#
3、 length函数,blength函数
length[(String)];返回参数指定字符串的长度,以字符为单位,如果未给出 String 参数,则返回整个记录的长度($0记录变量)。
# echo"Hello,awk! there is awk tutorial" | awk '{print length()}'32#
4、 substr函数
substr( String,M, [ N ] );返回从字符串string从第M位置开始,之后的N个字符的字符串。M 参数指定为将 String 参数中的第一个字符作为编号 1。如果未指定 N 参数,则子串的长度将是 M 参数指定的位置到 String 参数的末尾的长度。
# echo"Hello,awk! there is awk tutorial" | awk '{print substr($0, 5)}'o,awk! there isawk tutorial# echo"Hello,awk! there is awk tutorial" | awk '{print substr($0, 5, 6)}'o,awk!#
5、 spilt函数
split( String,A, [Ere] );将 String 参数指定的参数分割为数组元素 A[1], A[2], . . ., A[n],并返回 n 变量的值。此分隔可以通过 Ere 参数指定的扩展正则表达式进行,或用当前字段分隔符(FS 特殊变量)来进行(如果没有给出 Ere 参数)。除非上下文指明特定的元素还应具有一个数字值,否则 A 数组中的元素用字符串值来创建。
# echo"Hello,awk! there is awk tutorial" | awk '{split($0, arr); for (i inarr){print i,arr[i]}}'4 awk5 tutorial1 Hello,awk!2 there3 is
awk for …in 循环,是一个无序的循环。并不是从数组下标1…n ,因此使用时候需要注意。
6、 system函数
system(cmd);执行cmd 参数指定的命令,并返回退出状态。
# awk 'BEGIN{system("echo $HOME")}'/root
原来awk里面还可以调用shell 命令,高大上啊。
Awk系列文章就讲这么多,awk在文本处理方面相当出色,功能也很强大,掌握awk本系列已经可以做很多事情了,下一节将开始讲述sed命令。


2 0
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 u盘文件在手机上删了怎么办 荒野行动透视挂功能加载失败怎么办 白色t桖衫被奶茶弄脏了该怎么办 游戏文件不小心解压到c盘了怎么办 装系统时c盘0mb怎么办 电脑设置的开机密码忘了怎么办 电脑开机密码忘了怎么办xp系统 我的电脑在开机时忘了密码怎么办? xp桌面我的电脑图标不见了怎么办 游戏全屏时卡了无法退到界面怎么办 u盘插电脑上提示有病毒怎么办 三星手机文件怎么删除不掉怎么办 用夜神模拟器玩第五人格太卡怎么办 雷电模拟器玩刺激战场太卡了怎么办 绝地求生刺激战场模拟器太卡怎么办 ddj sb2打碟功能没了怎么办 驼背怎么办 要能快速矫正的方法 苹果7中间的home键坏了怎么办 苹果6p的home键不管用怎么办 华为获取数据失败请检查网络怎么办 三星手机未解锁刷机变砖怎么办 手机显示充电但是充不进去怎么办 手机拔出显示无法连接移动网怎么办 手机上的音乐老是显示网络忙怎么办 华为手机账号换手机忘记密码怎么办 墨墨背单词的注册邮箱忘了怎么办 华为手机华为账号密码忘记了怎么办 手机玩游戏降频特别厉害怎么办 苹果应用商店id登录老卡怎么办 苹果id忘记了自动续费怎么办 红米手机小米账号密码忘了怎么办 小米5splus没系统卡米怎么办 注册谷歌账号输入手机好怎么办 谷歌注册电话号码用了太多次怎么办 内存卡用了深度清理的软件怎么办 华为畅享5s密码忘了怎么办 小米5s进水了一直开机关机怎么办 手机菜单键功能键返回键失灵怎么办 小米5s更新系统发热严重怎么办 小米手机4G网速不好怎么办力 红米5 plus开不开机怎么办