我需要比较一下lunix中两个文件之间的差异,我需要在firts文件test.txt这行中的交集,
AAAA BBBB CCCC DDDD
并在seconde文件test2.txt中这行
EEEE FFFF AAAA GGGG DDDD
我需要结果
AAAA DDDD
我用这个命令
comm -23 <(sort -i /var/test.txt) <(sort -i /var/test2.txt) > g.txt
这是结果
BBBB CCCC
我需要test和test1之间的交集任何帮助
grep采取记忆
答案 0 :(得分:0)
man comm
:
EXAMPLES
comm -12 file1 file2
Print only lines present in both file1 and file2.
所以:
$ comm -12 <(sort -i test.txt) <(sort -i test2.txt)
aaaa
dddd
答案 1 :(得分:0)
目前还不清楚您是否试图挑选某些数字列(例如2, 3, etc..)
或者您是否尝试在两个单独的文件中找到一行中的常用词(我将后者作为您的目标) ,如果我错了,请告诉我。)
在这种情况下,您无法从任一文件中删除任何列,因为您不知道sort
之后常用词将驻留在哪一列。一个列不可知的方法来细化并输出排序顺序中的常用单词,只需sort
一个文件,选择,然后循环调用grep -q
的已排序单词以测试单词是否存在在第二个文件中,如果是这样输出它(你可以根据需要控制行格式)
其中一个,实现这一目标的方式并不是特别好:
for i in $(printf "%s\n" | sort -i test1.txt) ## loop over sorted test1.txt
do
grep -q "$i" test2.txt && echo -n "$i " ## grep if value in test2.txt
done
echo ""
您可以将其包装在子shell中(例如(....)
,然后将其复制并粘贴到您的终端中(在包含文件test1.txt
和test2.txt
的目录中),看看是否符合你的需求,例如
示例使用/输出
$ (
> for i in $(printf "%s\n" | sort -i test1.txt)
> do
> grep -q "$i" test2.txt && echo -n "$i "
> done
> echo ""
> )
aaaa dddd
仔细看看,如果您有其他问题,请告诉我。