我有两个文件,需要用linux 命令提取两个文件中,输出 分别有的行 和 相同的行,求助如何写命令?

我有两个文件,需要用linux 命令提取两个文件中,输出 分别有的行 和 相同的行,求助如何写命令?,第1张

你算问对人咯。使用linux的comm

如果是WIN下的文件,注意先转换换行符号!!!

先对文件进行排序去重复:sort filename1 |uniq>filename1-sorted

然后对第2个文件也排序去重复并管道使用comm 找出符合你要求的:

共同拥有的行:sort filename2|uniq|comm -12 - filename1-sorted>共同拥有的

文件 filename1-sorted独有的: sort filename2|uniq|comm -13 - filename1-sorted>filename1-sorted独有

文件 filename2独有的: sort filename2|uniq|comm -23 - filename1-sorted>filename2独有。

赶紧给分,哈哈!

用comm相对比较简单,也可以用 awk做:

共同拥有的:

gakw 'ARGIND==1{a[$1]=$1} ARGIND>1{if(a[$1]!="") print $0}' file1 file2>共同拥有

gakw 'ARGIND==1{a[$1]=$1} ARGIND>1{if(a[$1]=="") print $0}' file1 file2>file2独有

gakw 'ARGIND==1{a[$1]=$1} ARGIND>1{if(a[$1]=="") print $0}' file2 file1>file1独有

可以使用vim打开文件,然后通过 vim编辑 中的 /(向后查找)或者 ?(向前查找)来查找相应的字符串

示例:用vim打开/etc/passwd查找admin用户名

vim /etc/passwd

打开文件后,直接输入 /admin 回车即可查找如下图所示:

回车执行,vim查找到后,会标识出来,如下图所示:

另外:使用vim也可以打开可执行程序来查找字符串(在程序没有加壳或者使用其它字符串保护的前提下)。

示例:在test程序中查找hello字符串。

虽然使用vim打开二进制程序文件,显然的是乱码,但是明文字符串依然能查找到,如下图所示:

扩展:在Linux中如果要查找二进程文件即应用程序中的字符串,可以使用反汇编器、调试器等等,比如IDA,就提供强大的字符串查找功能。

1. gawk 'ARGIND==1{a[$1]=$1} ARGIND==2{if(a[$1]!="") print $1}' a.txt b.txt|gawk 'ARGIND==1{a[$1]=$1} ARGIND==2{if(a[$1]!="") print $1}' - c.txt

2.grep -Ff a.txt b.txt|grep -Ff - c.txt


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/9024915.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-24
下一篇2023-04-24

发表评论

登录后才能评论

评论列表(0条)

    保存