ed(1) добавляет ^M к каждой строке моего файла

Попробуйте это:

sed -n '/.*java:LOG:/p' inpufile > outputfile

Команда sed -n '/pattern/p'печатать только те строки, которые соответствуют шаблону внутри //

Ваша команда-sed 's/^.*java:LOG:=//'-использует замещающую конструкциюs/pattern/replace_string/(в поисках patternи заменяет ее наreplace_string)

Из вашего примера команды sedя предполагаю, что вам нужны только строки, содержащие java:LOG:. Это правда?

Обратите внимание на ваше имя файла-вы пропустили букву 't'-inpufile , но не inpu t файл

Если вам нужно точное совпадение с этой строкой:

2017-09-08 08:50:04.896 INFO 16323 --- [nio-8080-exec-8] c.c.c loginCOntroller.java:LOG:

.. шаблон будет слишком длинным

0
17.10.2019, 17:40
1 ответ

Серия команд, которые вы упоминаете в вопросе, не добавляет каретку -возвращает (^Mвещи )в ваш текстовый файл.

Однако, если в файле уже есть символы каретки -в конце каждой строки, которые есть во всех текстовых файлах DOS, тогда в файл будут добавлены не -строки DOS, что означает, что текстовый файл, после редактирования некоторые строки являются текстовыми строками Unix, а некоторые строки являются текстовыми строками DOS. В каком бы редакторе вы ни просматривали файл, он должен попытаться выяснить, что с этим делать, и решить отобразить его как текстовый файл Unix с отображением возврата каретки -, поскольку^M(vimсделал бы это, например ).

Решение состоит в том, чтобы запустить dos2unixдля вашего файла wp-config.php. Он мог бы обрабатывать смешанные типы строк и преобразовывал бы весь файл в текстовый файл Unix.

Также обратите внимание, что edсценарий редактирования не будет чисто заменять строку put your unique phrase hereв документе. Учитывая документ

000
AAA
put your unique phrase here
BBB
XXX

... последовательность команд будет генерировать

000
AAA
BBB
define('AUTH_KEY',...
...
XXX

(обратите внимание на расположение строки BBBдо и после ). Чтобы исправить это, чтобы строки defineдобавлялись перед BBBв тексте выше, измените команду aна команду i, т.е. вставьте перед текущей строкой , а не добавляйте после нее. ("текущая строка" будет строкой BBB, так как эта строка находится сразу после строки, измененной командой g//d).

4
28.01.2020, 02:17

Теги

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