我有两个文件,需要用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独有

function swap()

{

  tmpfile=$(mktemp $(dirname "$1")/XXXXXX)

  mv "$1" "$tmpfile" && mv "$2" "$1" &&  mv "$tmpfile" "$2"

}

吧代码加到~/.bashrc中,然后输入swap A B即可


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

原文地址: http://outofmemory.cn/yw/8975375.html

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

发表评论

登录后才能评论

评论列表(0条)

保存