linux下paste、diff、meld的使用
非常实用的几个小命令,可用于对文件、目录进行处理。
paste 逐行合并两个文件
-d 指定两个文件合并后每行之间的分隔符,如:
-d " " 以空格作为行之间的分隔符。
-d "\t" 以tab键作为行之间的分隔符。
-d "任意字符" 以"任意字符"作为行之间的分隔符。
-s paste one file at a time instead of in parallel
将合并后的行导入新文件中:
paste -d " " a b > c
例如:[root@localhost aaa]# more a
1
2
3
[root@localhost aaa]# more b
a
b
c
[root@localhost aaa]# paste a b
1 a
2 b
3 c
[root@localhost aaa]# paste -d " " a b
1 a
2 b
3 c
[root@localhost aaa]# paste -d ":" a b
1:a
2:b
3:c
[root@localhost aaa]# paste -s a b
1 2 3
a b c
diff逐行比较文件的不同[root@localhost aaa]# diff a b
1,3c1,3
< 1
< 2
< 3
---
> a
> b
> c
其中1,3表示行号1-3,c表示修改,即不同。常用的还有:
a表示多余的行;d表示删除的行,即少的行。
以""开头的行属于第二个文件。
diff也可比较目录的不同,但是不太方便。
diff有一个"-c"选项会以上下文的形式显示两个文件的不同之处,文件时间不同也会进行比较,行中不同的地方会在此行前加"!":[root@localhost aaa]# diff -c a b
*** a 2013-11-06 13:39:31.000000000 +0800
--- b 2013-11-06 15:11:04.000000000 +0800
***************
*** 1,3 ****
! 1
! 2
! 3
--- 1,3 ----
! a
! b
! c
meld常用于比较目录中的文件的不同,会将目录中多余的文件和不同的文件都显示出来,比较容易观察。
如果机器上没有此命令,那么需要安装meld,centos上可以配好yum后直接"yum install meld";ubuntu上可以直接"aptitude install meld"安装。安装好之后在命令行上输入meld,会生成一个图形界面,点击file->new,可以比较文件、目录、版本的不同。如下:
点击Directory Comparsion后输入两个目录的路径进行比较:
结果非常容易分辨,划横线的表示多的,文件内容不一样的也会高亮显示出来。