请教LINUX两个文件内容比较的写法

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教LINUX两个文件内容比较的写法相关的知识,希望对你有一定的参考价值。

我有两个文件,aa.txt和bb.txt:
aa.txt:
aaa
abc
bbb

bb.txt:
aaa
bbb
cde
ddd
如何比较输出这两个文件的差异项,如aa.txt比bb.txt多出的项abc,以及bb.txt比aa.txt多出的项cde和ddd,要如何写,请大家帮忙,谢谢
大家好,我需要的是能比较,然后转出aa.txt比bb.txt多出哪些项,少出哪些项,能清晰列出来,而不只是输出所有的差异,谢谢大家再帮忙看下

用法:diff [选项]... FILES
逐行比较文件。

-i --ignore-case 忽略文件内容大小写的区别。
--ignore-file-name-case 忽略文件名大小写的区别。
--no-ignore-file-name-case 不忽略文件名大小写的区别。
-E --ignore-tab-expansion 忽略由制表符宽度造成的差异。
-b --ignore-space-change 忽略由空格数不同造成的差异。
-w --ignore-all-space 忽略所有空格。
-B --ignore-blank-lines 忽略任何因空行而造成的差异。
-I RE --ignore-matching-lines=RE 如果某行匹配正则表达式,则忽略由该行造成的差异。
--strip-trailing-cr 去除输入内容每行末端的 carriage return 字符。
-a --text 所有文件都以文本方式处理。

-c -C 行数 --context[=行数] 显示指定<行数>(默认 3 行)copied 格式的上下文
-u -U 行数 --unified[=行数] 显示指定<行数>(默认 3 行)unified 格式的上下文
--label 标识 使用<标识>代替文件名称。
-p --show-c-function 显示和每个差异有关的 C 函数名称。
-F RE --show-function-line=RE 显示最接近而符合<正则表示式>的一行。
-q --brief 只显示文件是否不同。
-e --ed 以 ed script 方式输出。
--normal 以正常的 diff 方式输出。
-n --rcs 以 RCS diff 格式输出。
-y --side-by-side 以两列并排的方式显示。
-W NUM --width=NUM 每行显示最多 NUM (默认 130) 个字符。
--left-column 当有两行相同时只显示左边的一行。
--suppress-common-lines 当有两行相同时不会显示。
-D NAME --ifdef=NAME 输出的内容以‘#ifdef NAME’方式标明差异。
--GTYPE-group-format=GFMT 效果类似,但会以 GFMT 格式处理 GTYPE 输入的行。
--line-format=LFMT 效果类似,但会以 LFMT 格式处理每一行资料。
--LTYPE-line-format=LFMT 效果类似,但会以 LFMT 格式处理 LTYPE 输入的行。
LTYPE 可以是‘old’、‘new’或‘unchanged’。GTYPE 可以是 LTYPE 的选择
或是‘changed’。
GFMT 可包括:
%< 该组中每行属于 FILE1 的差异
%> 该组中每行属于 FILE2 的差异
%= 该组中同时在 FILE1 和 FILE2 出现的每一行
%[-][宽度][.[精确度]]doxX字符 以 printf 格式表示该<字符>代表的内容
大写<字符>表示属于新的文件,小写表示属于旧的文件。<字符>的意义如下:
F 行组中第一行的行号
L 行组中最后一行的行号
N 行数 ( =L-F+1 )
E F-1
M L+1
LFMT 可包括:
%L 该行的内容
%l 该行的内容,但不包括结束的 newline 字符
%[-][宽度][.[精确度]]doxXn 以 printf 格式表示的输入资料行号
GFMT 或 LFMT 可包括:
%% %
%c'C' 字符 C
%c'\OOO' 八进制数字 OOO 所代表的字符

-l --paginate 将输出送至‘pr’指令来分页。
-t --expand-tabs 将输出中的 tab 转换成空格。
-T --initial-tab 每行先加上 tab 字符,使 tab 字符可以对齐。

-r --recursive 连同所有子目录一起比较。
-N --new-file 不存在的文件以空文件方式处理。
--unidirectional-new-file 若第一文件案不存在,以空文件处理。
-s --report-identical-files 当两个一样时仍然显示结果。
-x PAT --exclude=PAT 排除匹配 PAT 的文件。
-X FILE --exclude-from=FILE 排除所有匹配在 FILE 中列出的模式的文件。
-S FILE --starting-file=FILE 当比较目录时,由 FILE 开始比较。
--from-file=FILE1 将 FILE1 和操作数中的所有文件/目录作比较。FILE1 可以是目录。
--to-file=FILE2 将操作数中的所有文件/目录和 FILE2 作比较。FILE2 可以是目录。

--horizon-lines=NUM (此选项不做处理)
-d --minimal 尽可能找出最小的差异。
--speed-large-files 假设文件十分大而且其中含有许多微小的差异。

-v --version 输出版本信息。
--help 输入本帮助。

FILES 的格式可以是‘FILE1 FILE2’、‘DIR1 DIR2’、‘DIR FILE...’或
‘FILE... DIR’。
如果使用 --from-file 或 --to-file 选项,FILES 的格式则不受限制。
如果 FILE 是‘-’,则由标准输入读取内容。

请向 <bug-gnu-utils@gnu.org> 报告错误。
参考技术A diff -Nur bb.txt aa.txt 参考技术B diff aa.txt bb.txt

高分请教.htaccess规则写法..URL 301

问题详见图片,不知道怎么的,老发不出问题,用图片试下:
简单说下,我的域名 aaa。com, 想重定向到 aaa。com/blog目录,但是其他url,比如aaa。com/xxx这种url不重定向,请问htaccess 文件应该怎么写呢?

这个是关键
RewriteRule ^(.*)$ xxx.com/blog/$1 [R=301,L]
如果只需要把 http://aaa.com/ 301转向到 http://xxx.com/ 其它不管的话,应该是
RewriteRule ^$ http://xxx.com/blog/ [L,R=301]追问

谢谢,那请问下,如果是除了aaa。com/blog这个url不转发,其他都转发应该怎么写呢?

追答

那就加条件
RewriteCond %HTTP_HOST ^aaa\.com$
RewriteCond %REQUEST_URI ^/blog

参考技术A 看不到 大图追问

点击图片或者保存下来看呢? 我这里没法补充问题,用文字发出来,baidu就给我吞了

以上是关于请教LINUX两个文件内容比较的写法的主要内容,如果未能解决你的问题,请参考以下文章

linux比较两个文件

linux 中两个文档怎么对比内容是不是一致

Beyond Compare如何比较文件内容的差异 如何对比文件内容的差异

Linux 下比较文件内容并相同部分不同部分

linux 比较两个文件的不同 #grep -vFf file1 file2

linux 中两个文档怎么对比内容是否一致