cut用来从文本文件或标准输出中抽取数据列或者域,然后再用paste可以将这些数据粘贴起来形成相关文件。粘贴两个不同来源的数据时,首先需将其分类,并确保两个文件行数相同。 paste将按行将不同文件行信息放在一行。缺省情况下, paste连接时,用空格或t a b键分隔新行中不同文本,除非指定- d选项,它将成为域分隔符。
paste格式为; paste -d -s -file1 file2
选项含义如下: -d 指定不同于空格或t a b键的域分隔符。例如用@分隔域,使用- d @。 -s 将每个文件合并成行而不是按行粘贴。 - 使用标准输入。例如ls -l |paste ,意即只在一列上显示输出。 从前面的剪切中取得下述两个文件:
[sam@chenwy sam]$ cut -d" " -f 2 pers2 >pas1 [sam@chenwy sam]$ cat pas1 ID897 ID666 ID982
[sam@chenwy sam]$ cut -d" " -f1 pers >pas2 [sam@chenwy sam]$ cat pas2 P.Jones S.Round L.Clip 基本paste命令将之粘贴成两列:
[sam@chenwy sam]$ paste pas1 pas2 ID897 P.Jones ID666 S.Round ID982 L.Clip 指定列 通过交换文件名即可指定哪一列先粘:
[sam@chenwy sam]$ paste pas2 pas1 P.Jones ID897 S.Round ID666 L.Clip ID982 使用不同的域分隔符 要创建不同于空格或t a b键的域分隔符,使用- d选项。下面的例子用冒号做域分隔符。
[sam@chenwy sam]$ paste -d: pas2 pas1 P.Jones:ID897 S.Round:ID666 L.Clip:ID982 要合并两行,而不是按行粘贴,可以使用- s选项。下面的例子中,第一行粘贴为名字,第二行是I D号。
[sam@chenwy sam]$ paste -s pas2 pas1 P.Jones S.Round L.Clip ID897 ID666 ID982 paste命令管道输入 paste命令还有一个很有用的选项( -)。意即对每一个( -),从标准输入中读一次数据。 使用空格作域分隔符,以一个4列格式显示目录列表。方法如下:
[sam@chenwy sam]$ ls | paste -d" " - - - - - 1.bak 1.txt append.sed backll.ee change.sed data.f data.txt delete_me_and_die dht dir1 ...................... 一行显示四个文件,以空格分开
[sam@chenwy sam]$ ls | paste -d: - - - - - 1.bak:1.txt:append.sed:backll.ee:change.sed data.f:data.txt:delete_me_and_die:dht:dir1 ..................... 一行显示四个文件,以冒号:分开
也可以以一列格式显示输出:
[sam@chenwy sam]$ ls | paste -d" " - 1.bak 1.txt append.sed backll.ee .................. 一行显示一个文件 |