在工作的时候,遇到这么一个需求,有两文件,一个是query_file_1.txt 里面是原始去query,还有一个是query_file_2.txt 里面是改写后的query,这两个里面分别有2w+ 的query,并且两份文件里的每一行是一一对应的,数据格式如下所示:
Code.0.1 query_file_1.txt
[root@mobius ~]$ cat query_file_1.txt
FIFA足球世界
FIFA足球世界
FIFA足球世界
wps表格
南方周末
央视戏曲app
学校安全教育平台下载
安装万能钥匙
安装万能钥匙
小猪短租
...Code.0.2 query_file_2.txt
[root@mobius ~]$ cat query_file_2.txt
fifa足球世界体
fifa足球世界世界
fifa足球世界 腾讯
wps 表格
南方周末报
央视戏曲app下载
学校教育安全平台下载
下载万能钥匙并安装
…万能钥匙
小猪短租公寓
...现想要将这两个文件每一行使用制表符进行联接,如下格式:
FIFA足球世界 fifa足球世界体
FIFA足球世界 fifa足球世界世界
FIFA足球世界 fifa足球世界 腾讯
wps表格 wps 表格
南方周末 南方周末报
央视戏曲app 央视戏曲app下载
学校安全教育平台下载 学校教育安全平台下载
安装万能钥匙 下载万能钥匙并安装
安装万能钥匙 …万能钥匙
小猪短租 小猪短租公寓
...在没有想到用paste命令之前是想写脚本或者awk 来实现,但总是觉得杀鸡用牛刀,最后找到了paste命令。
现写出解决方案:
Code.0.3 解决方法
[root@mobius ~]$ paste query_file_1.txt query_file_2.txt
FIFA足球世界 fifa足球世界体
FIFA足球世界 fifa足球世界世界
FIFA足球世界 fifa足球世界 腾讯
wps表格 wps 表格
南方周末 南方周末报
央视戏曲app 央视戏曲app下载
学校安全教育平台下载 学校教育安全平台下载
安装万能钥匙 下载万能钥匙并安装
安装万能钥匙 …万能钥匙
小猪短租 小猪短租公寓
...下面对其进行说明
paste [COMMAND] [file_1] [file_2] [file_3] ...其中常用的[COMMAND] 有 [-d] [-s]。
-d:是指出使用的分隔符,可以不写,如 Code.0.3 解决方法 所示一样,但是如果想用单引号' 或者 双引号" 进行分割的话,要加上转义符\
-s:是将每个文件的行进行平铺,如 Code.0.3 s 使用示例 所示
Code.1.1 s 使用示例
[root@mobius ~]$ paste -s query_file_1.txt
FIFA足球世界 FIFA足球世界 FIFA足球世界 wps表格 南方周末 央视戏曲app 学校安全教育平台下载 安装万能钥匙 安装万能钥匙 小猪短租下面有三个文件,分别是 name.txt , job.txt, email.txt ,其中 name.txt有四行数据,后两者有三行数据
[root@mobius ~]$ cat name.txt
张三
李四
王五
赵六[root@mobius ~]$ cat job.txt
程序员
设计师
产品经理[root@mobius ~]$ cat email.txt
zhangsan@mail.com
lisi@mail.com
wangwu@mail.com\t进行横向合并
Code.2.1 paste -d 横向合并[root@mobius ~]$ paste name.txt job.txt email.txt
张三 程序员 zhangsan@mail.com
李四 设计师 lisi@mail.com
王五 产品经理 wangwu@mail.com
赵六 其中最后一行 赵六 后面是有两个制表符\t
下面将分隔符换成 *就可看出
[root@mobius ~]$ paste -d* name.txt job.txt email.txt
张三*程序员*zhangsan@mail.com
李四*设计师*lisi@mail.com
王五*产品经理*wangwu@mail.com
赵六**[root@mobius ~]$ paste -s name.txt job.txt email.txt
张三 李四 王五 赵六
程序员 设计师 产品经理
zhangsan@mail.com lisi@mail.com wangwu@mail.com