Для этой проблемы я использовал простой и грубый метод, переименовав имя поля в пароль, причина этого в том, что я использую программное обеспечение Mac navicat premium в визуальной ошибке операции: Неизвестный столбец «пароль» в «Список полей» ', само программное обеспечение использует пароль, так что я не могу легко работать. Поэтому я выполняю root в командной строке базы данных, запускаю
Use mysql;
И затем изменяю имя поля:
ALTER TABLE user CHANGE authentication_string password text;
В конце концов, нормально.
Ваша команда работает для меня:
$ sed -r '/user-type/{N;s/user-type: (.*)\n.*gth: .*([0-9]+).*$/\1 \2/}' file.txt
admin 8
auth 8
Однако, если преобразовать ввод в формат DOS, я получу вывод, который вы видите:
$ sed -r '/user-type/{N;s/user-type: (.*)\n.*gth: .*([0-9]+).*$/\1 \2/}' <(sed 's/$/\r/' <file.txt)
8min
8th
Одно из решений - преобразовать ваш входной файл в окончание строки в стиле unix.
Другое решение - настроить команду sed таким образом, чтобы она допускала использование символов \ r
:
$ sed -r '/user-type/{N;s/user-type: (.*)\n.*gth: .*([0-9]+).*$/\1 \2/; s/\r//}' <(sed 's/$/\r/' <file.txt)
admin 8
auth 8
Или:
$ sed -r '/user-type/{N;s/user-type: ([^\r]*).?\n.*gth: .*([0-9]+).*$/\1 \2/}' <(sed 's/$/\r/' <file.txt)
admin 8
auth 8