更新时间:2022-10-02 20:25:03
1. 关于AWK
awk是一个非常强大的文本处理编程工具。
awk-->nawk-->gawk
2. awk的用法
基本使用格式: awk [options] 'script' file1 file2 关于script主要由 'pattern{action}' 组成。 |
3. awk实例
AWK默认情况下,分割符为空格或者TAB,利用$NUMBER的方式进行引用字段,注意$0为整行。
对于ACTION中print的使用用法: print item1,item2,item3... 要点: 各项目以,隔开,则输出时以空格隔开 可以通过 “”的形式插入字符串信息
AWK可以不用读取INPUTSTREAM的信息来直接格式化输出的。
AWK可以通过选项F来指定分隔符。
AWK内部支持变量,比如: 在BEGIN中可以定义: FS 输入分割符 当然可以通过选项F来定义 OFS 输出分隔符 注意到AWK是一行行的读取文本内容,那么行与行的标志是什么?默认情况下是换行符$ 其实对于AWK而言,我们完全可以自定义换行符。变量RS(record seperator ,默认是换行符,当然是输入换行符),对应的ORS是输出换行符。 NR number of input records AWK所处理的记录数 如果有多个文件,就累加 FNR AWK所处理的记录数 如果有多个文件,注意是相对于文件的 NF number of fileds 记录当前行的分片个数,显然如果我们在{print $NF}的话,打印的就是最后的一个分片内容,如果{print NF}的话,打印的是当前行的分片个数。 【注意在AWK中打印变量值是不需要加$的,在AWK中加入$的表示打印字段】
关于printf 需要注意,第一要指定FORMAT格式,第二PRINTF不会自动换行的 常用格式: %d %i 10进制整数 %f 浮点数 %s 字符串 %% 显示%自身 还可以对上面的格式进行修饰: N 宽度 - 左对齐 + 右对齐 默认
正则表达式 /regexp/ 【利用正则,过滤处理】
表达式
BEGIN/END 特殊模式,仅在AWK命令执行前或者执行结束后运行一次
|
4. AWK中如何编程
关于AWK中的ACTION: ACTION中支持if..else,for,while等流程控制语句,增强FOR循环也支持,与JAVA类似 【需要注意的是,这些流程控制语句与BASH在语法上可能有差异】
计算ID号<=500的用户个数:
AWK是一行一行的循环处理文本的,在ACTION中,我们可以利用next提前结束本行,进入下一行。 表示本行不再处理
AWK的内置函数: length(str) 返回字符的个数 在AWK中使用数组: 与一般的数组区别在于,数组索引从1开始 索引可以自定义 使用事例: 统计用户的shell种类和个数。
|
本文转自zfz_linux_boy 51CTO博客,原文链接:http://blog.51cto.com/zhangfengzhe/1541178,如需转载请自行联系原作者