grep -xf не соответствует ожидаемому выводу, может быть ошибкой - PullRequest
0 голосов
/ 28 декабря 2018

Я хочу распечатать одинаковые строки в a.txt и b.txt.Я думаю, что "grep -xf a.txt b.txt" отвечает моим потребностям.Но это не работает должным образом.Моя системная среда - MacOs Mojave

[yangyue ~/tempDir]$ cat a.txt
123 abc
123 abc jjj
123
456
zzz
[yangyue ~/tempDir]$ cat b.txt
123 abc
123 abc jjj
123
456def
456
xyz
[yangyue ~/tempDir]$ grep --color=never -xf a.txt b.txt
123 abc
123
456
[yangyue ~/tempDir]$

ожидаемый результат в этом случае

123 abc
123 abc jjj
123
456

Кодировка этих двух файлов одинакова.Там нет места в конце каждой строки.Я думаю, причина в том, что «123 abc» является префиксом «123 abc jjj». Затем я сделал два теста.

test1

[yangyue ~/tempDir]$ cat 1.txt
a
ab
abc
[yangyue ~/tempDir]$ cat 2.txt
a
ab
abc
[yangyue ~/tempDir]$ grep --color=never -xf 1.txt 2.txt
a
[yangyue ~/tempDir]$

test2

[yangyue ~/tempDir]$ cat 3.txt
abc
ab
a
[yangyue ~/tempDir]$ cat 4.txt
abc
ab
a
[yangyue ~/tempDir]$ grep --color=never -xf 3.txt 4.txt
abc
ab
a
[yangyue ~/tempDir]$

Это ошибка grep или мое использование неверно?

1 Ответ

0 голосов
/ 28 декабря 2018

Спасибо JamesBrown

Я нашел сервер Linux и сделал мой тест, я получил ожидаемый результат.grep -xf может иметь ошибки в MacO.Я использую grep --color=never в этом тестовом примере, потому что это также ошибка в MacOs grep -f в OS X приводит к segfault

В этом случае я получил ожидаемый вывод на MacOs, выполнивэтот.Но я не знаю, является ли это общим решением.

[yangyue ~/tempDir]$ sort -r a.txt > c.txt
[yangyue ~/tempDir]$ sort -r b.txt > d.txt
[yangyue ~/tempDir]$ cat c.txt
zzz
456
123 abc jjj
123 abc
123
[yangyue ~/tempDir]$ cat d.txt
xyz
456def
456
123 abc jjj
123 abc
123
[yangyue ~/tempDir]$ grep --color=never -xf c.txt d.txt
456
123 abc jjj
123 abc
123
[yangyue ~/tempDir]$
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...