Очистка списка хэшей phpass от файла - PullRequest
1 голос
/ 18 октября 2019

Я пытаюсь получить несколько строк, которые выглядят так (их несколько сотен), с файлом, который содержит data:string

Примеры строк: (конфиденциальные данные не предоставлены, они были изменены).

$H$9a...DcuCqC/rMVmfiFNm2rqhK5vFW1  
$H$9n...AHZAV.sTefg8ap8qI8U4A5fY91  
$H$9o...Bi6Z3E04x6ev1ZCz0hItSh2JJ/  
$H$9w...CFva1ddp8IRBkgwww3COVLf/K1 

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

grep -f strings.txt datastring.txt > output.txt  
grep -Ff strings.txt datastring.txt > output.txt

Но, к сожалению, эти команды НЕ работают успешнои только распечатать несколько результатов в мой выходной файл. Я думаю, что это может быть связано с символами, содержащимися в strings.txt, но я не уверен. Любая помощь / совет был бы полезен.

Для дальнейшего упоминания, я использую Cygwin в Windows (если это актуально).

Вот обновленный пример:
strings.txt содержитследующее:

$H$9a...DcuCqC/rMVmfiFNm2rqhK5vFW1  
$H$9n...AHZAV.sTefg8ap8qI8U4A5fY91  
$H$9o...Bi6Z3E04x6ev1ZCz0hItSh2JJ/  
$H$9w...CFva1ddp8IRBkgwww3COVLf/K1 

datastring.txt содержит следующее:

$H$9a...DcuCqC/rMVmfiFNm2rqhK5vFW1:53491  
$H$9n...AHZAV.sTefg8ap8qI8U4A5fY91:03221  
$H$9o...Bi6Z3E04x6ev1ZCz0hItSh2JJ/:20521  
$H$9w...CFva1ddp8IRBkgwww3COVLf/K1:30142  

Таким образом, технически все строки должны быть включены в файл OUTPUT, но выводится только эта строка:

$H$9w...CFva1ddp8IRBkgwww3COVLf/K1:30142 

Я просто не понимаю.

1 Ответ

1 голос
/ 19 октября 2019

В другом месте показан вывод cat -A strings.txt, который включает ^M, представляющий символ CR (возврат каретки) в конце каждой строки:

screenshot

Это означает, что в вашем файле есть окончания строк Windows (CR LF) вместо окончаний строк Unix (только LF), которых ожидал бы grep.

Вы можете конвертировать файлы с dos2unix strings.txt и обратнос unix2dos strings.txt.

В качестве альтернативы, если у вас не установлена ​​dos2unix в вашей среде Cygwin, вы также можете сделать это с помощью sed.

sed -i 's/\r$//' strings.txt    # dos2unix
sed -i 's/$/\r/' strings.txt    # unix2dos
...