首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux命令(43)——paste命令

Linux命令(43)——paste命令

作者头像
恋喵大鲤鱼
发布2018-08-03 10:09:49
1.2K0
发布2018-08-03 10:09:49
举报
文章被收录于专栏:C/C++基础C/C++基础

1.功能

paste命令将多个文件的相应行默认以Tab分隔符横向连接起来,输出到标准输出。paste后可接多个文件,不限于2个文件。如果文件写成“-”,表示内容来自标准输入。paste相对于join来说,简单许多,不需要有相同的字段才能按行连接。

2.格式

pasete [选项] [file1 ...]

3.选项说明

-d,--delimiters=[LIST]:用指定的域分隔隔符取代Tab。
-s,--serial:顺序地合并一个文件的所有行到一行。
--help:显示帮助信息。
--version:显示版本。

4.示例

有两个文件file1.txt和file2.txt,内容如下:

#file1内容
[root@tencent ~]# cat file1.txt
abc
def
ghi

#file2内容
[root@tencent ~]# cat file2.txt
123
456
789
012

(1)将文件file1.txt的所有行合并到一行。

[root@tencent ~]# paste -s file1.txt
abc def ghi

#指定域分隔符为:
[root@tencent ~]# paste -s file1.txt
abc:def:ghi

(2)将多个文件的所有行分别合并为一行。

[root@tencent ~]# paste -s file1.txt file2.txt
abc def ghi
123 456 789 012

(3)横向连接两个文件,默认以Tab分隔。

[root@tencent ~]# paste file1.txt file2.txt
[root@tencent ~]# paste a.txt 1.txt
abc 123
def 456
ghi 789
    012

#通过交换文件名可指定列的位置
[root@tencent ~]# paste file2.txt file1.txt
123 abc
456 def
789 ghi
012 

(4)paste黏贴的内容(行)从标准输入读取,此时可以使用“-”来指代。例如查看/etc下的文件列表,并用paste打印成每行显示五个文件名。

[root@tencent ~]# ls /etc/ | paste -d: - - - - -
cpi:adjtime:aliases:alternatives:anacrontab
anthy-conf:asound.conf:at.deny:audisp:audit
bash-command-not-found:bash_completion.d:bashrc:blkid:bonobo-activation
...

5.注意事项

如果文件格式是DOS,即文件换行符是\r\n,那么会出现内容覆盖的情况。比如 file1.txt和file2.txt格式是DOS,那么paste这两个文件会出现如下情况:

[root@tencent ~]# paste file1.txt file2.txt
:123
:456
:789
:012

从结果可以看出,来自file1.txt的行被file2.txt的行覆盖,解决办法是,使用vim的末行命令:set ff=unix将文本格式改为Unix。


参考文献

[1]man paste [2]Shell基础之-paste命令

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018年05月08日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.功能
  • 2.格式
  • 3.选项说明
  • 4.示例
  • 5.注意事项
  • 参考文献
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档