- awk 按照行处理的脚本
- 指定分隔符
用-F指定一个或者多个
cat test.csv | awk -F"," '{print $2,$3}' ----------------我习惯与用管道如此写:
也可以用BEGIN块+FS来处理,OFS表示输出的分隔符
awk 'BEGIN{FS=",";OFS=";" }{ print $1,$2}'
cat test.csv | awk -F"[,;]" '{print $2,$3}'
BEGIN 和END修饰块,表示只处理一次。
- 求和(简单的运算都可以)
对第4列求和,并打印值,分隔符为逗号
BEGIN和END预处理块,只执行一次,即处理开始前,和结束后
cat gridclass.result| awk -F ',' 'BEGIN{a=0}{a+=$4}END{print a}'
- 统计出现次数,或者累加,类似于sql 语句的count (XX) groupby
$ cat nayan.out saman 1 gihan 2 saman 4 ravi 1 ravi 2 $ cat nayan.out|awk '{arr[$1]+=$2} END {for (i in arr) {print i,arr[i]}}'
如果只统计某一列出现的次数:两种方式,第一种要慢一些
(1)sort|uniq -c [root@localhost server]# head stat.csv 1372409504,0,191,381,beg,bus 1372409504,0,268,376,bus,sub 1372409504,0,15,15,sub,end 1372409504,1,191,381,beg,bus 1372409504,1,387,377,bus,sub 1372409504,1,15,15,sub,end 1372409504,2,191,381,beg,bus 1372409504,2,270,473,bus,end 1372409504,3,178,352,beg,bus 1372409504,3,447,468,bus,sub 统计第5列各个字符出现的次数 用sort|uniq -c [root@localhost server]# cat stat.csv |awk -F ',' '{print $5}'|sort|uniq -c 272509 beg 400202 bus 64826 sub (2)awk的结果 cat stat.csv |awk -F ',' '{arr[$5]+=1} END{for (no in arr) {print no,arr[no]} }' beg 272509 sub 64826 bus 400202 如果需要按某一列中提取某个字符,然后统计 [root@localhost logs]# head 2013-07-01.csv 2013-7-1 12:54:02,沪FM1035 2013-7-1 12:43:37,京BR6716 统计各地方的牌照个数: [root@localhost logs]# awk -F ',' '{print substr($2,1,1)}' 2013-07-01.csv|sort|uniq -c 102418 川 261066 鄂 601 颚 39 贵 789109 沪 233 吉 407 冀 68218 津 404 晋 1380934 京 52852 辽 2382 鲁 44183 闽 89263 陕 184979 苏 546 湘 30 于 108413 渝 10 豫 176184 粤 273243 浙
相关推荐
当AWK打印或输出记录时,它会在每个记录后插入ORS指定的字符或字符串作为分隔符。这在需要定制输出格式时非常有用,比如使用`|`作为分隔符以生成CSV格式的输出。 ### FS (Field Separator) **FS** 是字段分隔符,...
Awk读取输入文件(或者标准输入),按照指定的分隔符将每一行分割成字段,并对每个字段执行预定义的动作。默认情况下,awk使用空格或制表符作为字段分隔符,但你可以根据需求自定义分隔符。 在awk中,程序通常包含...
- **内置变量**:如NR(已读取的行数)、NF(当前行的字段数)、FS(字段分隔符)等。 - **函数**:awk提供了内置的数学和字符串处理函数,如length()、split()、substr()等。 - **自定义函数**:可以创建用户...
但可以通过`-F`选项或内部变量`FS`自定义分隔符,如`awk -F: '{print $1}'`以冒号为分隔符打印第一列。 **3. 内置变量** `awk`提供了许多内置变量,如`NF`表示当前行的字段数,`NR`表示已读取的记录数(行数),`...
2. 字段分隔符:默认情况下,AWK将空格或制表符作为字段分隔符,但可以自定义字段分隔符,如使用FS变量。 3. 正则表达式:AWK支持正则表达式,允许对文本进行复杂的模式匹配。 4. 动态编程:AWK允许在脚本中编写函数...
该变量定义了 AWK 在输出记录时使用的分隔符。 - 支持情况:AWK、NAWK、GAWK 7. **FILENAME**:当前输入文件的名称。如果没有指定文件,则该值为 "-"。需要注意的是,在 BEGIN 块中 FILENAME 是未定义的(除非通过...
awk的工作原理是基于行的处理,它会读取输入文件的一行一行,然后根据指定的模式(pattern)进行匹配,并执行相应的动作(action)。基本语法是`awk 'pattern {action}' file`。例如,`awk '/pattern/ {print $0}' ...
这会将逗号作为字段分隔符,打印CSV文件的第一列。 ### 3. 内置变量 `awk`有许多内置变量,如`NR`(行号)、`NF`(字段数量)、`$0`(当前行)、`$1`、`$2`...(当前行的各字段)。例如: ```bash awk '{ print NR, NF,...
6. **字段分隔符**: awk默认以空格或制表符作为字段分隔符,但可以通过指定FS(Field Separator)来改变这一设置。 ```sh awk -F':' '{ print $1 " " $3 }' /etc/passwd ``` 上述命令将打印出`/etc/passwd`文件...
- **print**:AWK中最常用的输出函数,用于打印字段或表达式的结果,默认用空格作为字段间的分隔符。 - **Output Separators**:通过设置`OFS`(输出字段分隔符)变量可以改变字段间的分隔符。 - **printf**:...
- **AWK** 是一种脚本语言,专门设计用于处理文本数据,尤其是格式化的数据(如CSV文件)。它最初由贝尔实验室的Alfred Aho、Peter Weinberger和Brian Kernighan在1977年开发,名字取自三人的姓氏首字母。 - **AWK**...
AWK有预定义的变量,如`$0`代表当前记录(整行),`$1`到`$n`代表字段(按空格或制表符分隔)。用户也可以自定义变量。 **一.8 运算与判断** AWK支持算术运算、关系运算和逻辑运算,以及条件语句(`if...else`)和...
awk的默认分隔符是空格或制表符,但用户可以根据需要自定义分隔符。以下是一个简单的awk示例,它打印出文件中所有第三列值大于5的行: ```bash awk '$3 > 5' filename ``` awk的语法允许用户编写复杂的逻辑,如...
1. **字段分隔符(Field Separators)**:默认情况下,Awk将空格或制表符作为字段分隔符。你可以使用`-F`选项自定义分隔符,例如`awk -F ":"`将用冒号分隔字段。 2. **模式匹配**: Awk中的模式可以是正则表达式,...
- `-F` 或 `--field-separator`:指定字段分隔符,默认为空白字符。 - `-v` 或 `--assign`:为变量赋值。 - `-f` 或 `--file`:指定包含 `awk` 程序的文件。 例如,如果想要设置以逗号作为字段分隔符,并且打印文件...
AWK可以处理带有字段分隔符的数据,通过`-F`选项设置字段分隔符。例如,`awk -F":" '{ print $1 }' /etc/passwd`会打印出/etc/passwd文件中每一行的第一个字段,即用户名,因为在这里":"被设为字段分隔符。如果想...
awk可以按指定分隔符分割每一行,并对每个字段进行操作。awk程序通常包含模式(匹配条件)和动作,当一行满足某个模式时,就会执行相应的动作。awk还支持变量、函数和控制结构,使得处理复杂的数据逻辑变得简单。 ...