awk的一些使用记录(更新ing)

请使用awk命令将如下两份文件中名字相同的两行合并起来
   A文件:
      
孙行者 50岁
行者孙 500岁
者行孙 5000岁
孙者行 50000岁
   B文件:
   
行者孙 男
者行孙 男
孙行者 男
孙者行 男
输出效果:
    孙行者 50岁 男
[[email protected] ~]$ cat a b |sort -k1 |awk ‘BEGIN{t=""}{t=$1;if(tt==t){printf("%s",$2);printf("\n")}else{printf("%s %s ",$1,$2);}tt=t}‘ 
孙者行 50000岁 男
孙行者 50岁 男
者行孙 5000岁 男
行者孙 500岁 男

思路:先合并两个文件并排序

[[email protected] ~]$ cat a b |sort -k1
孙者行 50000岁
孙者行 男
孙行者 50岁
孙行者 男
者行孙 5000岁
者行孙 男
行者孙 500岁
行者孙 男
先定义一个容器为$1,也就是名字,然后做判断如果下一行的$1与这个相同的话,只输出$2,并换行。因为定义为空,所以不符合所以判断else输出$1,$2 也就是 孙者行 50000。其后判断相同只输出 $2 并换行。
如果说要的输出效果是 孙行者 50岁
               男

那要怎么办呢?

 cat a b |sort -k1 |awk ‘BEGIN{t=""}{t=$1;if(tt==t){printf("\t");printf("%s",$2);printf("\n")}else{printf("%s %s",$1,$2);printf("\n")}tt=t}‘  
孙者行 50000岁
        男
孙行者 50岁
        男
者行孙 5000岁
        男
行者孙 500岁
        男
思路其实都是一样的。
时间: 2024-12-11 00:24:21

awk的一些使用记录(更新ing)的相关文章

SQL Server 记录(更新中...)

sys.databases 显示所有数据库信息 sys.tables 显示当前数据库所有的表的信息 Go 向 SQL Server 实用工具发出一批 Transact-SQL 语句已结束的信号,Go本身不是T-SQL语句 sq_addrole 等等 SQL Server 系统存储过程以字符 sp_ 开头. EXEC或EXECUTE 执行 Transact-SQL 批处理中的命令字符串.字符串或执行下列模块之一:系统存储过程.用户定义存储过程.CLR 存储过程.标量值用户定义函数或扩展存储过程.

若干数据结构 && 算法面试题【四】(更新ing)

这是我的第三个面试题汇总. 想看之前的内容,请移步: http://zhweizhi.blog.51cto.com/10800691/1763237 ( 若干数据结构 && 算法面试题[一](更新完毕)) http://zhweizhi.blog.51cto.com/10800691/1775780 ( 若干数据结构 && 算法面试题[二](更新完毕)) http://zhweizhi.blog.51cto.com/10800691/1787562 ( 若干数据结构 &am

论深度优先(DFS)和广度优先搜索(BF)的优点及不足(更新ing)

例题: POJ 1915 Knight Moves 骑士遍历问题(跳马问题) 在一个m*m的棋盘上,从任意一个给定的位置(sx , sy)出发,为象棋中的马找一条路通过最少的步数到达另一位置(ex ,ey),输出最少所需要的步数. 利用bfs求解. 当马在位置(x , y)的时候其后继节点(后继选择)是什么? 对于马,有八个方向可以选择,马可以跳到如下几个位置: (x+2 , y+1) , (x+1 , y+2 ) , (x-1 , y+2) , (x-2 , y+1), (x+2 , y -1

storcli 命令(更新Ing)

help 1 [[email protected]]# storcli -h 2 Storage Command Line Tool Ver 007.0606.0000.0000 Mar 20, 2018 3 4 (c)Copyright 2018, AVAGO Technologies, All Rights Reserved. 5 6 7 storcli -v 8 storcli -h| -help| ? 9 storcli -h| -help| ? legacy 10 storcli sh

2019年1月训练记录(更新ing)

前言 时光飞逝,转眼间,便到了\(2019\)年. 这一年里,还是要继续努力吧,好好学习一些新的算法. 当然,还是要好好准备一下期末考试啦... ... \(Jan\ 1st\) 原文地址:https://www.cnblogs.com/chenxiaoran666/p/2019Jan.html

awk处理多行记录

我们所有的例子中用到的输入文件其记录都是由单独一行组成的.在这一部分,我们将演示如何读入一个记录,而记录中的每个字段都由单独一行组成. 前面我们了解了处理姓名和地址的文件的例子.让我们假设相同的数据保存在块格式的文件中.不是将所有的信息放置在一行,而是将人名放在一行,在下一行放置公司名.依此类推.下面是一个记录样本: John Robinson Koren Inc. 978 Commonwealth Ave. Boston MA 01760 696-0987 这个记录有6个字段,记录之间用空行分

AWK的用法(持续更新)

方法比较笨,算是做一个总结,习惯用AWK进行取值,下面以free -m为例来举例 !!!持续更新,看到的网友也可以留言的形式来一起更新内容,谢谢 例子: [[email protected] ~]# free -m              total       used       free     shared    buffers     cached Mem:          1861        174       1687          0          8      

我的模板(持续更新ing)[还很混乱]

1.头文件 短的: 1 #include<bits/stdc++.h> 2 #define cl(a,b) memset(a,b,sizeof(a)) 3 #define debug(a) cerr<<#a<<"=="<<a<<endl 4 using namespace std; 5 typedef long long ll; 6 typedef pair<int,int> pii; 7 8 const int

FireFox所支持的全部标签(持续更新ing)

近期研究上各个浏览器的差别,得到一些资料,FireFox眼下所支持的全部标签类型,持续更新,供大家參考和学习,不喜勿喷哦 http://mxr.mozilla.org/seamonkey/source/parser/htmlparser/src/nsElementTable.cpp