linux比较文件命令,linux比较两个文件

每天一个linux命令(1)sort

sort 是将文件的每一行作为一个单位,相互比较,比较原则是从首字符向后,依次按照ASCII码值进行比较,默认将他们按照升序输出

公司主营业务:成都做网站、网站建设、移动网站开发等业务。帮助企业客户真正实现互联网宣传,提高企业的竞争能力。创新互联建站是一支青春激扬、勤奋敬业、活力青春激扬、勤奋敬业、活力澎湃、和谐高效的团队。公司秉承以“开放、自由、严谨、自律”为核心的企业文化,感谢他们对我们的高要求,感谢他们从不同领域给我们带来的挑战,让我们激情的团队有机会用头脑与智慧不断的给客户带来惊喜。创新互联建站推出项城免费做网站回馈大家。

降序

在输出中去重

将排序结果输出到原文件

sort的默认输出是输出到标准输出,如果想把结果输出到文件,需要 sort file newfile,但是如果想把结果输出到原文件这样就不行了,这时就需要 使用sort -o

以数值来排序

sort 默认是按照字符串排序的,这样就会出现10比3小的情况,sort -n 就可以告诉sort 以整数排序

-t 后面跟 分隔符

-k 后面跟数字,表示用第几列排序

如 sort -t : -k 2 表示把每行 以:号分割,按照第二列排序

banana:30:5.5

orange:20:3.4

apple:10:2.5

我们可以看到,当baidu 和soho都是100的时候,baidu排在前面,当当前域按照默认规矩,是从第一个域开始进行升序排序,因此baidu排在了sohu前面。

sort 支持 -k 2 -k3这种模式,如果你需要,你可以继续这么写下去

你仔细看看,在-k 3后面偷偷加上了一个小写字母r,r和-r的作用是一样,你也可以把前面的-n去掉 在r后面加上n,如下

其实-k 选项 功能很强大,语法[ FStart [ .CStart ] ] [ Modifier ] [ , [ FEnd [ .CEnd ] ][ Modifier ] ]

从逗号前后 分为两大部分,即-k 2,2,是严格使用第一个域排序,如果只设置-k 2 其实是按照从第一个域到行尾。逗号分开的每部分又有一个点表示子域,即-k 1.2表示 按照第一个域的第二个字符排序,Modifiers就是我们用到的n和r 如 -k 1.2nr 具体我们看下面的例子。

我们使用了-k 1.2,这就表示对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。你会发现baidu因为第二个字母是a而名列榜首。sohu和 google第二个字符都是o,但sohu的h在google的o前面,所以两者分别排在第二和第三。这和之前说到的按照默认的排序规则 是不同的,当第一个域的第二个字符相同时,他不会去按照第一个字符排序,而是按照后面的字符排序,这是因为-k 1.2是对第一个域的第二个字符开始到本域的最后一个字符为止的字符串进行排序。而之前的夸域其实是一种假象。

-u只识别用-k设定的域,发现相同,就将后续相同的行都删除

但是这时候,却一行也没有删除。原来-u是会权衡所有-k选项,将都相同的才会删除,只要其中有一级不同都不会轻易删除的

可以用到b、d、f、i、n 或 r。

其中n和r你肯定已经很熟悉了。

b表示忽略本域的签到空白符号。

d表示对本域按照字典顺序排序(即,只考虑空白和字母)。

f表示对本域忽略大小写进行排序。

i表示忽略“不可打印字符”,只针对可打印字符进行排序。(有些ASCII就是不可打印字符,比如\a是报警,\b是退格,\n是换行,\r是回车等等)

Linux使用diff命令怎么比较文件

Y:diff命令

●简介

★diff命令用于比较文件的差异。

★diff以逐行的方式,比较文本文件的异同处。如果指定要比较目录,则diff会比较目录中相同文件名的文件,但不会比较其中子目录。

●语法

★命令格式:diff[参数][文件1或目录1][文件2或目录2]

★参数:

☆-行数  指定要显示多少行的文本。此参数必须与-c或-u参数一并使用。

☆-a或--text  diff预设只会逐行比较文本文件。

☆-b或--ignore-space-change  不检查空格字符的不同。

☆-B或--ignore-blank-lines  不检查空白行。

☆-c  显示全部内文,并标出不同之处。

☆-C行数或--context行数  与执行"-c-行数"指令相同。

☆-d或--minimal  使用不同的演算法,以较小的单位来做比较。

☆-D巨集名称或ifdef巨集名称  此参数的输出格式可用于前置处理器巨集。

☆-e或--ed  此参数的输出格式可用于ed的script文件。

☆-f或-forward-ed  输出的格式类似ed的script文件,但按照原来文件的顺序来显示不同处。

☆-H或--speed-large-files  比较大文件时,可加快速度。

☆-l字符或字符串或--ignore-matching-lines字符或字符串  若两个文件在某几行有所不同,而这几行同时都包含了选项中指定的字符或字符串,则不显示这两个文件的差异。

☆-i或--ignore-case  不检查大小写的不同。

☆-l或--paginate  将结果交由pr程序来分页。

☆-n或--rcs  将比较结果以RCS的格式来显示。

☆-N或--new-file  在比较目录时,若文件A仅出现在某个目录中,预设会显示:

☆Only in目录:文件A若使用-N参数,则diff会将文件A与一个空白的文件比较。

☆-p  若比较的文件为C语言的程序码文件时,显示差异所在的函数名称。

☆-P或--unidirectional-new-file  与-N类似,但只有当第二个目录包含了一个第一个目录所没有的文件时,才会将这个文件与空白的文件做比较。

☆-q或--brief  仅显示有无差异,不显示详细的信息。

☆-r或--recursive  比较子目录中的文件。

☆-s或--report-identical-files  若没有发现任何差异,仍然显示信息。

☆-S文件或--starting-file文件  在比较目录时,从指定的文件开始比较。

☆-t或--expand-tabs  在输出时,将tab字符展开。

☆-T或--initial-tab  在每行前面加上tab字符以便对齐。

☆-u,-U列数或--unified=列数  以合并的方式来显示文件内容的不同。

☆-v或--version  显示版本信息。

☆-w或--ignore-all-space  忽略全部的空格字符。

☆-W宽度或--width宽度  在使用-y参数时,指定栏宽。

☆-x文件名或目录或--exclude文件名或目录  不比较选项中所指定的文件或目录。

☆-X文件或--exclude-from文件  您可以将文件或目录类型存成文本文件,然后在=文件中指定此文本文件。

☆-y或--side-by-side  以并列的方式显示文件的异同之处。

☆--help  显示帮助。

☆--left-column  在使用-y参数时,若两个文件某一行内容相同,则仅在左侧的栏位显示该行内容。

☆--suppress-common-lines  在使用-y参数时,仅显示不同之处。

●案例

★实例一:比较两个文件

[root@localhost test3]# diff log2014.log log2013.log

3c3

2014-03

---

2013-03

8c8

2013-07

---

2013-08

11,12d10

2013-11

2013-12

☆上面的"3c3"和"8c8"表示log2014.log和log20143log文件在3行和第8行内容有所不同;"11,12d10"表示第一个文件比第二个文件多了第11和12行。

★实例二:并排格式输出

[root@localhost test3]# diff log2014.log log2013.log -y -W 50

2013-01 2013-01

2013-02 2013-02

2014-03 | 2013-03

2013-04 2013-04

2013-05 2013-05

2013-06 2013-06

2013-07 2013-07

2013-07 | 2013-08

2013-09 2013-09

2013-10 2013-10

2013-11

2013-12

[root@localhost test3]# diff log2013.log log2014.log -y -W 50

2013-01 2013-01

2013-02 2013-02

2013-03 | 2014-03

2013-04 2013-04

2013-05 2013-05

2013-06 2013-06

2013-07 2013-07

2013-08 | 2013-07

2013-09 2013-09

2013-10 2013-10

2013-11

2013-12

★说明:

☆"|"表示前后2个文件内容有不同;

☆""表示后面文件比前面文件少了1行内容;

☆""表示后面文件比前面文件多了1行内容;

Linux下文件搜索、查找、查看命令

1、最强大的搜索命令:find 查找各种文件的命令 

2、在文件资料中查找文件:locate

3、搜索命令所在的目录及别名信息:which 

4、搜索命令所在的目录及帮助文档路径:whereis

5、在文件中搜寻字符串匹配的行并输出:grep

6、分页显示一个文件或任何输出结果:more

7、分页显示一个文件并且可以回头:less

8、指定显示前多少行文件内容:head

9、指定显示文件后多少行内容:tail

10、查看一个文件:cat

11、查看文件内容多少字符多少行多少字节:wc

12、排序文件内容:sort

一、根据 文件或目录名称 搜索

find 【搜索目录】【-name或者-iname】【搜索字符】:-name和-iname的区别一个区分大小写,一个不区分大小写

eg:在/etc 目录下搜索名字为init的文件或目录

①、find /etc -name init (精准搜索,名字必须为 init 才能搜索的到)

②、find /etc -iname init (精准搜索,名字必须为 init或者有字母大写也能搜索的到)

③、find /etc -name *init (模糊搜索,以 init 结尾的文件或目录名)

④、find /etc -name init??? (模糊搜索,? 表示单个字符,即搜索到 init___)

二、根据 文件大小 搜索

eg:在根目录下查找大于 100M 的文件

find / -size +204800

这里 +n 表示大于,-n 表示小于,n 表示等于

1 数据块 == 512 字节 0.5KB,也就是1KB等于2数据块

100MB == 102400KB204800数据块

三、根据 所有者和所属组 搜索

①、在home目录下查询所属组为 root 的文件

find /home -group root

②、在home目录下查询所有者为 root 的文件

find /home -user root

四、根据 时间属性 搜索

find 【路径】【选项】【时间】

选项有下面三种:-amin 访问时间

-cmin 文件属性被更改

-mmin 文件内容被修改

时间:+n,-n,n分别表示超过n分钟,n分钟以内和n分钟

eg:在 /etc 目录下查找5 分钟内被修改过属性的文件和目录

find /etc -cmin -5

五、根据 文件类型或i节点 搜索

 -type 根据文件类型查找:

 f表示文件,d表示目录,l表示软链接

eg:查找 /home 目录下文件类型是目录的

find /home -type d

-inum 根据i节点查找

eg:查找 /tmp 目录下i节点为400342的文件或目录

  find /tmp -inum 400342

六、组合条件 搜索

这里有两个参数:

①、-a 表示两个条件同时满足(and)

②、-o 表示两个条件满足任意一个即可(or)

范例:查找/etc目录下大于80MB同时小于100MB的文件

find /etc -size +163840 -a -size -204800

语法:locate【文件名】 -i 不区分大小写

注意:这里和 find 命令是有区别的,find是全盘检索,而locate 是在文件资料库中进行搜索。所以locate命令的执行要比find命令执行速度快很多。但是这里有个问题,文件资料库是需要不断更新的。我们新创建的文件如果不更新 文件资料库,使用 locate 是查找不到的。

updatedb 手动更新资料库,但是对于/tmp目录下的新建文件,是更新不到文件资料库的,因为/tmp目录不属于文件资料库的收录范围。

eg:locate hcf

功能描述:搜索命令所在的目录及别名信息

 语法:which【命令】

 eg:which ls

功能描述:搜索命令所在的目录及帮助文档路径

 语法:whereis【命令】

 eg:whereis ls

功能描述:在文件中搜寻字符串匹配的行并输出

 语法:grep -iv 【指定字符串】【文件】

-i 不区分大小写

-v 排除指定字符串

 eg:查找 /root/install.log 文件中包含 mysql 字符串的行,并输出

grep mysql /root/install.log

本搜索工具,根据用户指定的模式,对目标文件逐行进行匹配检查,打印匹配到的行

grep是在文件中搜索匹配的字符串,是在文件中进行内容搜索,这个命令后面用到的比较多

描述:

分页显示一个文件或任何输出结果

用于查看纯文本文件(较长的)格式

格式:

more[选项] 文件

less 与 more 类似,但使用 less 可以随意浏览文件,而 more 仅能向前移动,却不能向后移动,而且 less 在查看之前不会加载整个文件。

head[必要参数][选择参数][文件]

用于显示指定文件开始多少行内容

命令参数:

-n 10 显示前10行

-n -10 正常输出但不显示最后的10行

eg:显示new.txt的前两行内容

head -n 2 new.txt

head -2 new.txt

tail[必要参数][选择参数][文件]

用于显示指定文件末尾多少行内容

命令参数:

-n 10 显示后面10行

-f 持续刷新显示的内容

eg:显示new.txt的末尾两行内容

tail -n 2 new.txt

tail -2 new.txt

eg:指定从第二行开始显示

tail -n +2 new.txt

描述:一次显示整个文件内容

cat 命令 用于查看纯文本文件(较短)

 cat [选项] [文件]…

描述:wc 命令默认情况下会打印换行符数、单词数和字符数。

 用法:wc [选项] [文件]

用法:sort [选项] [文件]

转自: Linux下文件搜索、查找、查看命令_黄小小的博客-CSDN博客_linux 搜索

Linux 基础教程 11-基本命令diff和comm

diff命令主要用来比较文件的差异。diff会以逐行的方式比较文本文件的差异,如果指定比较的是目录,则diff会比较目录中相同文件名的文件,但不会比较其子目录。

主要参数如下所示:

second.txt

comm命令主要用于比较两个 已经排过序 的文件。

主要参数如下所示:

comm在对比文件前 一定要先排序 ,否则会出现报错提示,以上面diff示例的中的first.txt和second.txt为例


文章名称:linux比较文件命令,linux比较两个文件
文章URL:http://myzitong.com/article/dsijhci.html