Я пытаюсь почистить файл журнала для лучшей читабельности - там есть куча ненужных вещей для моих нужд - я в основном должен заменить sshd [xxxx], где xxxx - произвольное число, ну, или пробел или ничего такого. Хотя я могу заменить известную строку, я понятия не имею, как в этом случае использовать подстановочный знак sed. Итак, как мне это сделать?
2 ответа
Вы хотите заменить все числа после sshd
внутри []
ничем. Для выбора чисел вы можете использовать диапазон [0-9]\+
, где [0-9]
соответствует любой цифре, а \+
означает один или несколько из них ранее.
Так что для вашего случая регулярное выражение для замены чисел на нули будет
sed -r s/\[[0-9]\+\]/\[\]/
где -r
включает расширенное регулярное выражение, подобное приведенному выше. \[
И \]
просто избегают [
и ]
поэтому их не интерпретирует sed
.
Для операторов регулярного выражения, таких как \+
, смотрите этот раздел в руководстве gawk
, список символов, например [0-9]
смотрите в этом разделе - большая часть того, что вы видите там, применима и к sed
.
Не ясно, хотите ли вы заменить sshd, так что я предположил, что это так.
sed 's/sshd\[[0-9]*\]//g' file
иначе,
sed 's/sshd\[[0-9]*\]/sshd[]/g' file