shell文本过滤编程(八):awk之内置函数
来源:互联网 发布:可视化数据分析软件 编辑:程序博客网 时间:2024/05/17 03:40
【版权声明:转载请保留出处: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
- #
index( String1, String2 );
在第一个参数string1中查找字符串string2,返回首次出现的位置。
- # echo "Hello,awk! there is awk tutorial" | awk '{printindex($0, "awk")}'
- 7
- #
length[(String)];返回参数指定字符串的长度,以字符为单位,如果未给出 String 参数,则返回整个记录的长度($0记录变量)。
- # echo"Hello,awk! there is awk tutorial" | awk '{print length()}'
- 32
- #
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!
- #
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 awk
- 5 tutorial
- 1 Hello,awk!
- 2 there
- 3 is
6、 system函数
system(cmd);执行cmd 参数指定的命令,并返回退出状态。
- # awk 'BEGIN{system("echo $HOME")}'
- /root
Awk系列文章就讲这么多,awk在文本处理方面相当出色,功能也很强大,掌握awk本系列已经可以做很多事情了,下一节将开始讲述sed命令。
FROM: http://blog.csdn.net/shallnet/article/details/38925317
0 0
- shell文本过滤编程(八):awk之内置函数
- shell文本过滤编程(八):awk之内置函数
- shell文本过滤编程(二):awk之基础
- shell文本过滤编程(三):awk之条件判断
- shell文本过滤编程(五):awk之printf
- shell文本过滤编程(七):awk之变量传递
- shell文本过滤编程(七):awk之变量传递
- shell文本过滤编程(四):awk内置变量及一般变量
- shell之文本过滤(awk)
- shell之文本过滤(awk)
- shell之文本过滤(awk)
- shell文本过滤编程(六):awk之循环判断及数组
- Shell编程第十七弹——使用awk过滤文本
- Linux Shell 脚本编程(8)—文本过滤(awk命令)
- Shell编程之文本过滤笔记
- shell编程之文本与日志过滤
- [Shell]awk内置函数介绍
- shell基础八:文本过滤工具(grep)
- 架构设计:系统间通信(18)——服务治理与Dubbo 下篇(继续分析)
- eclipse 的常规设置
- win7 64系统上装了VS2010后,启动vs2010,报错0xc000007b解决方法
- java的位运算
- 从反编译深入理解JAVA内部类类结构以及final关键字
- shell文本过滤编程(八):awk之内置函数
- 初学ViewPager+Fragment的时候,app包中的fragment和v4包中的fragment的使用常常出现混乱,现在总结一下
- 你有必要知道的 25 个 JavaScript 面试题
- SVN提交代码提示org.apache.subversion.javahl.ClientException: Attempted to lock an already-locked dir解决办法
- Python找不到Enum
- java学习笔记
- rapidjson 使用
- iOS自定义控件_CustomTextView
- Android Framework探索