paste命令_Linux paste命令:合并(拼接)文件
paste 的拼接原理是什么?这个很简单,和 cut 的原理几乎一样,就是将几个文件的相应行用制表符(Tab)连接起来,并输出到标准输出。
我们来看 paste 最简单的使用方法:
可以看到,paste 将两个文件的对应行用制表符进行了拼接。
paste 好强大,多个文件,照样能够按行拼接。而且会发现,paste 拼接是和文件列表的顺序有关的。
要注意一点,此处一定要把星号用引号括起来(单引号双引号均可),否则 Shell 会把星号扩展为当前目录下的文件列表,千万小心。
这下看懂了吧,
好了,paste 命令我们就介绍到这里了,几个知识点都不复杂,相信聪明的你早已经掌握了。
我们来看 paste 最简单的使用方法:
#第一个文件, 含有三行内容 [roc@roclinux ~]$ cat p1.txt 1 2 3 #第二个文件, 也含有三行内容 [roc@roclinux ~]$ cat p2.txt a b c #拼接两个文件 [roc@roclinux ~]$ paste p1.txt p2.txt 1 a 2 b 3 c #可以看出, paste使用了制表符(Tab)作为间隔符 [roc@roclinux ~]$ paste p1.txt p2.txt|sed -n l 1\ta$ 2\tb$ 3\tc$
可以看到,paste 将两个文件的对应行用制表符进行了拼接。
两个行数不同的文件如何拼接
对于行数不同的两个文件,paste 采用尽力拼接的原则,对于超出的行,则只能单独展示了,毕竟巧妇难为无米之炊嘛。我们来看一个例子:#第一个文件, 有5行 [roc@roclinux ~]$ cat s1.txt a b c d e #第二个文件, 有3行 [roc@roclinux ~]$ cat s2.txt 1 2 3 #拼接s1和s2 [roc@roclinux ~]$ paste s1.txt s2.txt a 1 b 2 c 3 d e #拼接s2和s1, 注意, 参数的顺序对输出是有影响的 [roc@roclinux ~]$ paste s2.txt s1.txt 1 a 2 b 3 c d e应该不需要再解释了,例子已经把 paste 的拼接原理展示得淋漓尽致了。
三个文件能 paste 么
刚才的例子是 paste 两个文件,那三个文件可以 paste 么?当然可以,看看例子吧:#这是第三个文件, 也有3行 [roc@roclinux ~]$ cat p3.txt I II III #按p1、p2、p3的顺序拼接 [roc@roclinux ~]$ paste p1.txt p2.txt p3.txt 1 a I 2 b II 3 c III #按p3、p2、p1的顺序拼接 [roc@roclinux ~]$ paste p3.txt p2.txt p1.txt I a 1 II b 2 III c 3
paste 好强大,多个文件,照样能够按行拼接。而且会发现,paste 拼接是和文件列表的顺序有关的。
paste 的拼接符只能是制表符么
我不想用制表符来间隔,我想用星号(*)来间隔,可以么?答案是可以的,使用-d
选项就可以设定间隔符。来一起看看例子:
[roc@roclinux ~]$ paste -d '*' p3.txt p2.txt p1.txt I*a*1 II*b*2 III*c*3
要注意一点,此处一定要把星号用引号括起来(单引号双引号均可),否则 Shell 会把星号扩展为当前目录下的文件列表,千万小心。
说说 paste 命令的 -s 选项
“示例”胜于雄辩,我们通过例子来解释-s
选项的作用:
#这是第一个文件 [roc@roclinux ~]$ cat p1.txt 1 2 3 #这是第二个文件 [roc@roclinux ~]$ cat p2.txt a b c 这是第三个文件 [roc@roclinux ~]$ cat p3.txt I II III #我们使用了-s选项, 注意观察 [roc@roclinux ~]$ paste -s -d "*" p1.txt p2.txt p3.txt 1*2*3 a*b*c I*II*III
这下看懂了吧,
-s
就是以每个文件自身为一个处理单元,将此文件中的所有行以-d
选项设定的间隔符拼接成一大行,并输出到标准输出中。好了,paste 命令我们就介绍到这里了,几个知识点都不复杂,相信聪明的你早已经掌握了。
所有教程
- socket
- Python基础教程
- C#教程
- MySQL函数
- MySQL
- C语言入门
- C语言专题
- C语言编译器
- C语言编程实例
- GCC编译器
- 数据结构
- C语言项目案例
- C++教程
- OpenCV
- Qt教程
- Unity 3D教程
- UE4
- STL
- Redis
- Android教程
- JavaScript
- PHP
- Mybatis
- Spring Cloud
- Maven
- vi命令
- Spring Boot
- Spring MVC
- Hibernate
- Linux
- Linux命令
- Shell脚本
- Java教程
- 设计模式
- Spring
- Servlet
- Struts2
- Java Swing
- JSP教程
- CSS教程
- TensorFlow
- 区块链
- Go语言教程
- Docker
- 编程笔记
- 资源下载
- 关于我们
- 汇编语言
- 大数据
- 云计算
- VIP视频