'\t'指的是file.csv不同列以'\t'分割,如果的是以其他符号分割,换成其她符号;
'{print $2}'是指取第2列,此处从1开始计数,第1列,第2列;
一般去重之前要进行排序
cat file.csv | awk -F '\t' '{print $2}' | sort | uniq
前半部分与命令1一样,后面加上| sort | uniq
比如通过命令2发现,第2列取值有两种,分别是'neg'和‘pos’,那么我想知道有多少行的第2列取值为'pos',多少行的第2列取值为'neg'。
cat file.csv | awk -F '\t' '{print $2}' | grep -o 'neg'| wc -l
前半部分与命令1一样,后面加上 | grep -o 'neg'| wc -l
grep -o 'neg'就是取出取值为'neg'的行
wc -l 是计数有多少行
比方说遇到一行是xxx 7
那么, {a[$1]+=$2b[$1]++} 这句代码的作用就是依次执行
a["xxx"] += 7
b["xxx"] ++
这两条命令用分号隔开,所以没有因果关系,仅仅是先后依次执行而已。你也可以把两条命令颠倒次序,没有任何影响。
awk 依次读取文件,按照分隔符(默认为空格,用户可修改)将每行分割成若干个字段,代码中可通过 $1, $2, $3 ... 来引用第1、2、3。。。个字段。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)