Linux基础命令:paste

介绍

cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。

paste将按行将不同文件行信息放在一行。缺省情况下,paste连接时,用空格或tab键分隔新行中不同文本,除非指定- d选项,它将成为域分隔符。

paste格式为:

paste -d -s -file1 file2

选项含义如下:

-d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。

-s 将每个文件合并成行而不是按行粘贴。

- 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。

[root@linux-node1 ~]# cat file1
a
b
c
d
[root@linux-node1 ~]# cat file2
1001  hisk01
1001  hisk02
1001  hisk03
1002  hisk04
[root@linux-node1 ~]# paste -d -s file1file2
a-1001  hisk01
b-1001  hisk02
c-1001  hisk03
d-1002  hisk04

基本命令

[root@linux-node1 ~]# paste file1 file2
a   1001  hisk01
b   1001  hisk02
c   1001  hisk03
d   1002  hisk04

指定列

通过交换文件名即可指定哪一列先粘:

[root@linux-node1 ~]# paste file2 file1
1001  hisk01    a
1001  hisk02    b
1001  hisk03    c
1002  hisk04    d

使用不同的域分隔符

要创建不同于空格或tab键的域分隔符,使用- d选项。下面的例子用冒号做域分隔符。

[root@linux-node1 ~]# paste -d: file1 file2
a:1001  hisk01
b:1001  hisk02
c:1001  hisk03
d:1002  hisk04
[root@linux-node1 ~]# paste -d+ file1 file2
a+1001  hisk01
b+1001  hisk02
c+1001  hisk03
d+1002  hisk04

要合并两行,而不是按行粘贴,可以使用- s选项。下面的例子中,第一行粘贴为名字,第二行是I D号。

[root@linux-node1 ~]# paste -s file1 file2
a   b   c   d
1001  hisk01    1001 hisk02    1001  hisk03    1002  hisk04

paste命令管道输入

paste命令还有一个很有用的选项( -)。意即对每一个( -),从标准输入中读一次数据。使用空格作域分隔符,以一个4列格式显示目录列表。

方法如下:

[root@linux-node1 5050]# ll
total 100
drwxr-xr-x 2 root root  4096Mar 30 17:22 bin
drwxr-xr-x 3 root root  4096Mar 30 16:43 conf
drwxr-xr-x 2 root root  4096Mar 30 16:40 lib
-rw-r--r-- 1 root root 57011 Nov 9 16:53 LICENSE
drwxr-xr-x 2 root root  4096Mar 30 16:48 logs
-rw-r--r-- 1 root root  1444Nov  9 16:53 NOTICE
-rw-r--r-- 1 root root  6741Nov  9 16:53 RELEASE-NOTES
-rw-r--r-- 1 root root 16195 Nov 9 16:53 RUNNING.txt
drwxr-xr-x 2 root root    29Mar 30 16:40 temp
drwxr-xr-x 3 root root    32Mar 30 17:33 webapps
drwxr-xr-x 3 root root    21Mar 30 16:43 work
[root@linux-node1 5050]# ls | paste -d"" - - - -
bin conf lib LICENSE
logs NOTICE RELEASE-NOTES RUNNING.txt
temp webapps work
[root@linux-node1 5050]# ls | paste -d"" - - - - -
bin conf lib LICENSE logs
NOTICE RELEASE-NOTES RUNNING.txt temp webapps
work
posted @ 2019-08-21 14:52  第十一个程序员  阅读(501)  评论(0编辑  收藏  举报