Я пытаюсь почистить файл журнала для лучшей читабельности - там есть куча ненужных вещей для моих нужд - я в основном должен заменить sshd [xxxx], где xxxx - произвольное число, ну, или пробел или ничего такого. Хотя я могу заменить известную строку, я понятия не имею, как в этом случае использовать подстановочный знак sed. Итак, как мне это сделать?

2 ответа2

1

Вы хотите заменить все числа после sshd внутри [] ничем. Для выбора чисел вы можете использовать диапазон [0-9]\+ , где [0-9] соответствует любой цифре, а \+ означает один или несколько из них ранее.

Так что для вашего случая регулярное выражение для замены чисел на нули будет

sed -r s/\[[0-9]\+\]/\[\]/

где -r включает расширенное регулярное выражение, подобное приведенному выше. \[ И \] просто избегают [ и ] поэтому их не интерпретирует sed .

Для операторов регулярного выражения, таких как \+ , смотрите этот раздел в руководстве gawk , список символов, например [0-9] смотрите в этом разделе - большая часть того, что вы видите там, применима и к sed .

1

Не ясно, хотите ли вы заменить sshd, так что я предположил, что это так.

   sed 's/sshd\[[0-9]*\]//g' file

иначе,

   sed 's/sshd\[[0-9]*\]/sshd[]/g' file

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .