Linux命令:纵向/横向合并文本 cat/paste

cat 和 paste 分别为linux中 纵向 以及 横向合并文本的命令

纵向合并 cat

cat 是 concatenate的缩略,其主要功能是查看文件或纵向合并文件。

对单个文件使用时为查看文件

-n 选项为显示行号

$ cat file1.txt 
1 apple
2 banana
3 pear
4 orange

#-n 第一列输出行号
$ cat -n file1.txt 
     1  1 apple
     2  2 banana
     3  3 pear
     4  4 orange

对多个文件使用时即为纵向合并

$ cat file1.txt 
1 apple
2 banana
3 pear
4 orange

$ cat file2.txt 
1 pear
2 apple
3 banana
5 kiwi

#查看文件1与文件2(也就是将两个文件纵向合并)
$ cat file1.txt file2.txt 
1 apple
2 banana
3 pear
4 orange
1 pear
2 apple
3 banana
5 kiwi

#文件名称仅有数字不同时可以使用以下简略写法
$ cat file[1-2].txt
1 apple
2 banana
3 pear
4 orange
1 pear
2 apple
3 banana
5 kiwi

cat的其他选项


-b	--number-nonblank	添加行号,但空白行不添加
-s	--squeeze-blank	将连续的空白行缩为一行
-v	--show-nonprinting	显示TAB、换行,分页以外的非表示文字
-t	―	显示非表示文字 tab以"^I"显示等
-E	--show-ends	行末以"$"表示
-A	--show-all	显示所有非表示文字(与-vET相同)
-e	―	显示除tab以外的非表示文字(与-vE相同)


横向合并 paste

paste 与cat类似,但是是 逐行 横向 合并(单纯合并,不进行连接,不改变行的顺序,连接的话用join命令)

#合并file1与file2 , 默认的分隔符为tab
$ paste file1.txt file2.txt 
1 apple 1 pear
2 banana        2 apple
3 pear  3 banana
4 orange        5 kiwi

#也可以使用简略写法
paste file[1-2].txt

-d可以指定合并后的分隔符

#指定分隔符为空格
$ paste -d' ' file1.txt file2.txt 
1 apple 1 pear
2 banana 2 apple
3 pear 3 banana
4 orange 5 kiwi

#指定分隔符为,
$ paste -d',' file1.txt file2.txt 
1 apple,1 pear
2 banana,2 apple
3 pear,3 banana
4 orange,5 kiwi

-s 可以实现按字段合并(按行横向合并的转置)

$ paste -d' ' -s file1.txt file2.txt 
1 apple 2 banana 3 pear 4 orange
1 pear 2 apple 3 banana 5 kiwi

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

您正在使用您的 WordPress.com 账号评论。 注销 /  更改 )

Twitter picture

您正在使用您的 Twitter 账号评论。 注销 /  更改 )

Facebook photo

您正在使用您的 Facebook 账号评论。 注销 /  更改 )

Connecting to %s