我有两个内容相似的文件。对于ex file1,有不同的傻瓜的文件权限详细信息:
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/abc
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyz
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyzhrt/rth
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyz/rhr/rthrh
-rw-rwxr--+ 3 user1 hive 1462 2017-01-31 16:55 /user/anc/xyz/rhrhheh
-rw-rwxr--+ 3 user1 hive 9 2017-01-31 16:55
File2的内容相似。
我想要比较这两个文件,以便如果file1中的文件夹与file2中具有相同名称的文件夹具有相同的权限,则打印完整的行然后PASS或者False。
答案 0 :(得分:1)
这样的东西?
$ cat a.txt
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/abc
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyz
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyzhrt/rth
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyz/rhr/rthrh
-rw-rwxr--+ 3 user1 hive 1462 2017-01-31 16:55 /user/anc/xyz/rhrhheh
$ cat b.txt
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/abc
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyz
$ sort a.txt b.txt |uniq -d
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/abc
drwxrwxr-x+ - user1 hive 0 2017-01-31 16:55 /user/anc/xyz
Uniq -d打印重复的行。如果两个文件具有相同的行,则上述简单方法有效。
为了根据相同的文件夹名称(第8列)查找两个文件中存在的文件,并且在相同的权限上,您可以执行以下操作:
sort -k8 a.txt b.txt |awk '{print $1,$8}' |uniq -d
sort -k8
将使用第8列将这两个文件排序为排序键(文件夹名称)
awk
将打印字段1(权限)和字段8(文件夹)
uniq -d
会找到完全相同的条目,在这种情况下意味着相同的权限和文件夹名称(由awk格式化)
然后,您可以使用某种grep从任何文件中提取公共行。
因此,即使有多个maches,这也可以基于第一列和最后一列正常工作:
$ common=$(sort -k8 a.txt b.txt |awk '{print $1":"$8}' |uniq -d|cut -d':' -f2)
$ grep -F "$common" a.txt
可以使用其他工具(如awk等)实现各种解决方案。
答案 1 :(得分:0)
首先
打印第一列,然后打印最后一个文件名
perl -a -nE 'print $F[0]," ", ((split(/\//,$_))[-1])'
输出:
drwxrwxr-x+ abc
drwxrwxr-x+ xyz
drwxrwxr-x+ rth
drwxrwxr-x+ rthrh
-rw-rwxr--+ rhrhheh
你告诉我:我收到的内容如上所述。现在我想根据最后一列比较两个文件的第一列 和 File2具有相似的内容。
所以我认为两个文件中唯一不同的是许可
好了,现在您可以轻松存储您的文件输出到差异文件,例如: file_1 和 file_1 ,然后比较在命令行中使用diff
。而已。
$ cat file_1
drwxrwxr-x+ abc
drwxrwxr-x+ xyz
drwxrwxr-x+ rth
drwxrwxr-x+ rthrh
-rw-rwxr--+ rhrhheh
$ cat 2
drwxrwxr-x+ abc
drwxrwxr-x+ xyz
drwxrwxr-x+ rth
drwxrwxr--+ rthrh
-rw-rwxr--+ rhrhheh
$ diff file_1 file_2
4c4
< drwxrwxr-x+ rthrh
---
> drwxrwxr--+ rthrh