文件 file2内容如下:
0 qwert
1 asdfghjk
2 asdjkl
2 zxcvbn
3 dfghjkll
4 22222
4 tyuiop
4 bnm

让第一列相等的合并成一行,不要第一列,也就是变为如下格式:
22222;tyuiop;bnm
qwert
asdfghjk
asdjkl;zxcvbn
dfghjkll

第一种解法

解题思路:

awk '{if(a[$1]){a[$1]=a[$1]";"$2}else{a[$1]=$2}}END{for(i in a)print a[i]}' file2

file2

0 qwert
1 asdfghjk
2 asdjkl
2 zxcvbn
3 dfghjkll
4 22222
4 tyuiop
4 bnm

第一行  if(a[0]) 因为a[0]没有任何值,因此直接进行输出else a[0]= qwert

第二行  if(a[1]) 因为a[1]没有任何值,因此直接进行输出else a[1]= asdfghjk

第三行  if(a[2]) 因为a[2]没有任何值,因此直接进行输出else a[2]= asdjkl

第四行  if(a[2]) 因为a[2]= asdjkl,符合条件,执行a[$1]=a[$1]";"$2----> a[2]=a[2]";"$2--->a[2]=asdjkl;zxcvbn

第五行 if(a[3]) 因为a[3]没有任何值,因此直接进行输出else a[3]= dfghjkll

第六行 if(a[4]) 因为a[4]没有任何值,因此直接进行输出else a[4]=  22222

第七行  if(a[4]) 因为a[4]= 22222,符合条件,执行a[$1]=a[$1]";"$2----> a[4]=a[4]";"$2--->a[4]=22222;tyuiop

第八行  if(a[4]) 因为a[4]= 22222;tyuiop,符合条件,执行a[$1]=a[$1]";"$2----> a[4]=a[4]";"$2--->a[4]=22222;tyuiop;bnm

整个文件循环完毕后最后的结果是:

a[0]= qwert

a[1]= asdfghjk

a[2]=asdjkl;zxcvbn

a[3]= dfghjkll

a[4]=22222;tyuiop;bnm

END{for(i in a)print a[i]}

使用for去数组a的下标 0 1 2 3 4

然后分别打印 a[0] a[1] a[2] a[3] a[4]

(因为提取数组下标是一个不规则的输出,因此这个结果可能是随机排序)

第二种解法

shell脚本,awk合并一列的问题。的更多相关文章

  1. linux awk命令详解,使用system来内嵌系统命令, awk合并两列

    linux awk命令详解 简介 awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分 ...

  2. shell脚本 awk工具

    awk工具概述awk编程语言/数据处理引擎基于模式匹配检查输入文本,逐行处理并输出通常在shell脚本中,或取指定的数据单独用时,可对文本数据做统计 命令格式格式一:awk [选项] '[条件]{编辑 ...

  3. shell脚本 awk实现实时监控网卡流量

    一.简介 通过第3方工具获得网卡流量,这个大家一定很清楚.其实通过脚本一样可以实现效果.下面是我个人工作中整理的数据.以下是shell脚本统计网卡流量. 现原理: cat /proc/net/dev ...

  4. shell脚本——awk

    目录 一.awk 1.1.awk简介 1.2.基本格式 1.3.工作原理 1.4.常见的内建变量(可直接用) 按字段输出文本 1.5.awk和getline 有重定向符 无重定向符 1.6.指定分隔符 ...

  5. shell脚本awk的基本用法

    AWK 1 AWK 2 3 linux取IP地址 4 5 ifconfig | grep -w inet | sed -n '1p' | awk '{print $2}' 6 7 eg: 8 9 aw ...

  6. shell脚本 awk实现查看ip连接数

    一.简介 处理文本,是awk的强项了. 无论性能已经速度都是让人惊叹! 二.使用 适用:centos6+ 语言:英文 注意:无 awk 'BEGIN{ while("netstat -an& ...

  7. weblogic每天日志合并shell脚本 [个人记录]【转】【补】

    from RogerZhu modified by King sh logback.rb "/data/logs/" "/tmp/domain" "a ...

  8. Linux常用命令及shell脚本

    一.     用户管理(添加用户.切换用户.删除用户) ~                                                                        ...

  9. Linux Shell脚本入门--awk命令详解

    简单使用: awk :对于文件中一行行的独处来执行操作 . awk -F :'{print $1,$4}'   :使用‘:’来分割这一行,把这一行的第一第四个域打印出来 . 详细介绍: AWK命令介绍 ...

随机推荐

  1. [Xcode 实际操作]八、网络与多线程-(2)使用UIApplication对象打开网页

    目录:[Swift]Xcode实际操作 本文将演示如何使用应用程序单例对象,打开指定的网页. 在项目导航区,打开视图控制器的代码文件[ViewController.swift] import UIKi ...

  2. [題解]BZOJ_1260_塗色

    簡單的區間dp,結果竟然寫掛了......還掛的很徹底......狗屎 如果區間左右端點相等,那麼不需要在多花一次去刷,對 f [ i+1 ] [ j ],f [ i ] [ j-1 ]取個min, ...

  3. ES5(基本包装类型)字符串的方法

    看一下字符串有哪些常用的方法: 1.concat();将多个文本组合起来,返回新的字符串,就是拼接字符串. 查找位置 2.indexOf();返回要匹配的字符在字符串第一次出现的索引,参数就是匹配的字 ...

  4. JS面向对象方法(二) 面向对象方法实现橱窗式图面预览以及放大功能

     效果图: HTML结构如下: <div id="preview"> <div id="mediumDiv"> <img id=& ...

  5. Jasper_crosstab_Parameter_Crosstab Header

    corsstab: Q : how to show filed value at crosstab Header Part? A : via pass parameter in crosstab. i ...

  6. python学习之字符编码

    字符串涉及到编码:ascii gbk gb2312 unicode uft-8 对于英文字符ASCII(可以看成utf-8的子集)就可以了,中文用gbk/gb2312; unicode:世界统一(兼容 ...

  7. HDU 3359 高斯消元模板题,

    http://acm.hdu.edu.cn/showproblem.php?pid=3359 题目的意思是,由矩阵A生成矩阵B的方法是: 以a[i][j]为中心的,哈曼顿距离不大于dis的数字的总和 ...

  8. HDU 1028 Ignatius and the Princess III dp整数划分

    http://acm.hdu.edu.cn/showproblem.php?pid=1028 dp[i][j]表示数值为i,然后最小拆分的那个数是j的时候的总和. 1 = 1 2 = 1 + 1 . ...

  9. 响应式Spring Cloud初探

    响应式Spring Cloud初探 分类:工程原文链接:The Road to Reactive Spring Cloud作者:  JOSH LONG译者: helloworldtang日期:JUNE ...

  10. [转]用NPOI操作EXCEL--通过NPOI获得公式的返回值

    本文转自:http://www.cnblogs.com/atao/archive/2009/10/12/1582085.html 前面我们学习了通过NPOI向Excel中设置公式,那么有些读者可能会问 ...