介绍
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