Linux中awk工具的使用详解( 七 )


正则表达式中的问号 ? 表示它前面的字符只能出现 0 次 或者 1 次,也就是可以不出现,也可以出现,但如果有出现也只能出现 1 次 。
正则表达式中的 {} 花括号用法
$ awk '/go{2}d/{print $0}' poetry.txtThere is nothing either good or bad, but thinking makes it so
花括号{}表示规定它前面的字符必须出现的次数,像上面这个/go{2}d/就表示只匹配字符串 "good",也就是中间的字母 "o" 必须要出现 2 次 。
正则表达式中的花括号还有一些其他的用法如下
/go{2,3}d/表示字母 "o" 只能可以出现 2 次或者 3 次/go{2,10}d/表示字母 "o" 只能可以出现 2次,3次,4次,5次,6次 ... 一直到 10 次/go{2,}d/表示字母 "o" 必须至少出现 2 次或着 2 次以上
正则表达式中的圆括号的用法
$ awk '/th(in){1}king/{print $0}' poetry.txtThere is nothing either good or bad, but thinking makes it so
正则表达式中的圆括号表示将多个字符当成一个完整的对象来看待 。比如/th(in){1}king/就表示其中字符串 "in" 必须出现 1 次 。而如果不加圆括号就变成了/thin{1}king/这个就表示其中字符 "n" 必须出现 1 次 。
看到这里,如果你对 .txt 件中写的诗比较熟悉,你就会发现 。。。我去!这诗根本就不是我写的 。所以论多读书是多么的重要 。我有幸借用莎士比亚的诗来向你讲解如何在 awk 中使用正则表达式 。现在该想想晚上吃什么,晚上去吃火锅 。。。—_—
使用 awk 的一些总结
【Linux中awk工具的使用详解】因为 awk 算起来也是一种编程语言,它的功能远远不止我们上面讲的这些,awk 还有一些其他比较复杂的功能 。但一般我们不建议将 awk 用的太过于复杂 。通常面对一些比较复杂的场景我们还是要使用其他的一些工具,比如 shell 脚本,Lua 等等 。