paste 命令学习
paste
命令会把每个文件以列对列的方式,一列列地加以合并 ,就是相当于把两个不同的文件内容粘贴在一起,形成新的文件。
[root@104 ~]# cat a.txt
aaa
bbb
ccc
dd*
eee
dd*d
[root@104 ~]# cat b.txt
111
222
333
444
555
[root@104 ~]# paste a.txt b.txt
aaa 111
bbb 222
ccc 333
dd* 444
eee 555
dd*d
语法
参数 | 说明 |
---|---|
-d | 默认域的分隔符是空格或 tab 键,设置新的域分隔符(即列分隔符) |
-s | 将每个文件粘贴成一行 |
使用示例
默认是以列的方式合并两个文件,将文件中的所有行当成一列。命令格式如下:
paste 文件1 文件2 文件3…
注:合并后的结果并不会直接保存到文件,会输出到控制台,可以通过
>
重定向到某个文件中。
[root@104 ~]# cat a.txt
aaa
bbb
ccc
dd*
eee
dd*d
[root@104 ~]# cat b.txt
111
222
333
444
555
[root@104 ~]# paste a.txt b.txt
aaa 111
bbb 222
ccc 333
dd* 444
eee 555
dd*d
指定列分隔符
默认情况下,是以空格或制表符 tab 作为每一列之间的分隔符的,但我们可以自定义分隔符。命令格式如下:
paste -d 分隔符 文件1 文件2 文件3…
#默认使用空格进行分割,这里使用 -d 参数指定分隔符为 =
[root@104 ~]#
[root@104 ~]# paste -d = a.txt b.txt
aaa=111
bbb=222
ccc=333
dd*=444
eee=555
dd*d=
[root@104 ~]# paste -d = a.txt b.txt c.txt
aaa=111=1q
bbb=222=3e
ccc=333=2w
dd*=444=4r
eee=555=
dd*d==
以行的方式合并多个文件
paste
既可以以列的形式粘贴合并,也可以也行的方式,默认是以列的方式。我们将文件以行的方式进行合并,先是将一个文件的所有行合并成一行,然后再进行多个文件的合并,期间也可以指定分隔符。命令格式如下:
语法:
paste -s 文件1 文件2 文件3…
格式:
paste -s file1.txt file2.txt
# 以行的方式合并多个文件
[root@104 ~]# paste -s a.txt
aaa bbb ccc dd* eee dd*d
[root@104 ~]# paste -s a.txt b.txt
aaa bbb ccc dd* eee dd*d
111 222 333 444 555
# 以行的方式合并多个文件,并指定分隔符
[root@104 ~]# paste -s -d = a.txt b.txt
aaa=bbb=ccc=dd*=eee=dd*d
111=222=333=444=555