`

awk 指定分隔符,读取csv格式的某些列

阅读更多
  • awk 按照行处理的脚本
  • 指定分隔符
如:以逗号分割,打印2,3列

用-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 浙
分享到:
评论

相关推荐

    shell中的awk命令

    指定分隔符`-F “”` 指定分隔符`FS=””` 指定分隔符5.关系和布尔运算值6.表达式7.系统变量8.格式化输出9.内置字符串函数gsub函数indexlength 1.awk–“样式扫描和处理语言” awk是一种很棒的语言,它适合文本处理...

    Linux+Script+CSV+awk+对比两个CSV文件中指定字段差异

    使用Bash Shell 脚本对比两个CSV文件中指定字段差异

    csv转换:将csv文件转换为更容易解析的格式(例如,awk)

    由于可以将“ csv”文件格式的字段括在双引号中,以包括定界符(逗号)和换行符,因此很难或不可能将awk(1)之类的工具设计为可操作的在包含每行记录的文件上(每个字段由指定的分隔符分隔,该分隔符不出现在任何...

    pluckr:在命令行中从 csv 文件中提取列。 像 cut 或 awk,但不要因分隔符转义而窒息

    像 cut 或 awk,但不会因分隔符转义而窒息。 安装 pip install pluckr 。 完毕。 用法 从 stdin 中获取第 2 列和第 3 列( -f是单索引): pluckr -f 2,3 < sample1.csv 或直接从文件: pluckr -f 2,1 ...

    linux文本处理三剑客之 awk 命令(二)

    文章目录表达式统计input文件中的空白行平均值的计算系统变量格式化输出awk的ascii字符的转换awk的字符型字符的转换printf 修饰符的栗子内置字符串函数举个例子 表达式 统计input文件中的空白行 平均值的计算 ...

    awk语言编程使用规则

    1. awk语言的最基本功能是在文件或字符串中基于指定规则来分解抽取信息,也可以基于指定的规则来...① -F fs : 使用fs作为输入记录的字段分隔符,如果省略该选项,awk使用环境变量IFS的值。 。。。。。。。。。。。。

    CSV文件过滤uncsv.zip

    uncsv 是一个过滤命令,把 CSV 文件的行转换为非转义、非引用的分隔符文件 (默认为 pipe )。如果遇到一个字符匹配的分隔符就会出错,而且会取代回车和新行中引用的字符。uncsv 允许你使用 awk 来运行你的 CSVs。 csv...

    高效awk编程

    简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各种分析处理。 awk有3个不同版本: awk、nawk和gawk,未作特别说明,一般指gawk,gawk 是 AWK 的 GNU 版本。 awk其名称得...

    awk学习awk学习awk学习awk学习

    awk学习awk学习awk学习awk学习awk学习awk学习awk学习

    Shell脚本中awk指令的用法

    常用选项:-F 指定分隔符,分隔符用””引起来 -v:var=value在awk程序开始之前指定一个值valu给变量var,这些变量值用于awk程序的BEGIN快 -f:后面跟一个保存了awk程序的文件,代替在命令行指定awk程序 实例1:...

    awk入门到精通.pdf

    因awk语言具有某些特点, 如 : 使用直译器(Interpreter)不需先行编译; 变量无类型之分 (Typeless), 可使用文字当数组的下标(Associative Array)...等特色. 因此, 使用awk撰写程序比起 使用其它语言更简洁便利且节省...

    python xlsx转csv

    一般对于csv表格文件,在linux可以直接以文本形式打开,并用sed、awk等流编辑器进行格式化处理。但是,对于xls表格文件,需要安装软件包catdoc,之后可以用命令xls2csv将xls表格文件转换为csv文件,接着就可以处理了...

    Shell文本处理工具–awk

    awk -F 分隔符 BEGIN{}{}END{} FILENAME 默认以空格为分隔符 BEGIN和END可以忽略不写。 NR #显示行数 NF #列数 以冒号为分隔符,每一行的列数。 以bash结尾的行的列数。 打印出以bash结尾的行。 FILENAME ...

    Awk学习笔记

    2. awk命令格式和选项 2.1. awk的语法有两种形式 2.2. 命令选项 3. 模式和操作 3.1. 模式 3.2. 操作 4. awk的环境变量 5. awk运算符 6. 记录和域 6.1. 记录 6.2. 域 6.3. 域分隔符 7. gawk专用正则表达式元...

    awk与cut命令进行比较(就awk与cut按列提取文本内容方面进行比较)

    实验:awk与cut命令进行比较 首先创建2个文件一个脚本文件一个txt文件 ...提取成功 可见对于awk把空格符当作分隔符,但是对于cut并不适用。 接下来做关于制表符的实验 重新编辑shell脚本文件 然后执行这个脚本文件

    巧用AWK处理二进制数据文件

    awk是unix,linux中处理文本的好工具,本文用一个实例说明awk脚本的编写及使用.

    shell脚本–awk的用法

    常用选项:-F 指定分隔符,分隔符用””引起来 -v:var=value在awk程序开始之前指定一个值valu给变量var,这些变量值用于awk程序的BEGIN快 -f:后面跟一个保存了awk程序的文件,代替在命令行指定awk程序 实例1:在...

    AWK用法AWK用法AWK用法

    awk ‘/101/’ file 显示文件file中包含101的匹配行。 awk ‘/101/,/105/’ file awk ‘$1 == 5′ file awk ‘$1 == “CT”‘ file 注意必须带双引号 awk ‘$1 * $2 >100 ‘ file awk ‘$2 >5 && $2<=15' file

    awk用法__都是例子

    awk用法__都是例子 awk用法__都是例子 awk用法__都是例子 awk用法__都是例子

    Linux awk 命令用法详解

    Linux awk 命令 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 之所以叫AWK是因为其取了三位创始人 Alfred Aho,Peter ...指定输入文件折分隔符,fs是一个字符串或者是一个正则表达式,如-F:。 -v var=val

Global site tag (gtag.js) - Google Analytics