проблема с grep с использованием файла шаблона

Чтобы установить PySide от имени пользователя, используйте pipс опцией --user:

pip install --user PySide2
2
22.03.2021, 04:50
2 ответа

Я не могу воспроизвести:

$ printf '%s\n' ALNTPKDHI CTDDNALAY CTDDNALAYY > patterns.txt
$ printf '%s\n' 'ALNTPKDHI 1' 'CTDDNALAY 2' 'CTDDNALAYY 3' > input.txt
$ grep -w -f patterns.txt input.txt 
ALNTPKDHI 1
CTDDNALAY 2
CTDDNALAYY 3

Проверьте, не содержат ли шаблоны или входные данные какие-либо необычные управляющие или пробельные символы, такие как возврат каретки.

1
28.04.2021, 22:58

Я могу воспроизвести то, что вы видите, только в том случае, если последняя строка файла шаблона неполная, то есть если последняя строка не заканчивается завершающим символом новой строки. Если строка неполная, grepне будет использовать эту строку.

Если вы запустите od -cдля файла, вы увидите, какой последний символ. Это пример последней строки , а не , заканчивающейся новой строкой :

.
$ od -c pattern.txt
0000000    A   L   N   T   P   K   D   H   I  \n   C   T   D   D   N   A
0000020    L   A   Y  \n   C   T   D   D   N   A   L   A   Y
0000035

Это пример того, как это может выглядеть, если файл заканчивается символом новой строки.:

$ od -c pattern.txt
0000000    A   L   N   T   P   K   D   H   I  \n   C   T   D   D   N   A
0000020    L   A   Y  \n   C   T   D   D   N   A   L   A   Y  \n
0000036

Вы можете добавить новую строку в файл, используя

echo >>pattern.txt

Большинство текстовых редакторов автоматически добавляют завершающий символ новой строки в последнюю строку текста при сохранении файла, если его изначально там не было.

1
28.04.2021, 22:58

Теги

Похожие вопросы