#bash #sed
#bash #sed
Вопрос:
Необходимо удалить уникальную временную метку: «Thu Apr 11 13:19:02 2019» из фразы: «Файл журнала, датированный Thu Apr 11 13:19: 02 2019, был импортирован».используя ТОЛЬКО команду sed (обязательное условие).
Примечание: Пожалуйста, обратите внимание, что входной файл содержит две фразы!!!
https://unix.stackexchange.com/questions/88382/using-sed-to-delete-everything-between-two-words
/^Log file dated/,/have been imported./{/^Log file dated/!{/have been imported./!d}}
К сожалению, это не работает, когда у нас есть две фразы в одном файле.
Ответ №1:
Просто удалите все, что находится между двумя фразами.
s/Log file dated .* have been imported./Log file dated have been imported/
Ответ №2:
gnu sed, если данные в файле ‘s’
sed -E 's/sw sw s[123][0-9]s([0-9][0-9]:?){3}s[0-9]{4}b//' s
perl,
$s= "Log file dated Thu Apr 11 13:19:02 2019 have been imported."
$s =~ s/sw sw s[123][0-9]sdd:dd:ddsd{4}b//
print $s
просто посмотрите https://perldoc.perl.org/perlre.html
Ответ №3:
Спасибо за помощь!
Вот еще один рабочий метод, обнаруженный моим коллегой, который помещает текст «[TIMESTAMP]» вместо уникальной временной метки:
s/[A-Za-z]{3}.[A-Za-z]{3}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}/[TIMESTAMP]/g
Тест в консоли bash:
echo "Log file dated Thu Apr 11 13:19:02 2019 have been imported." | sed 's/[A-Za-z]{3}.[A-Za-z]{3}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}.[0-9]{1,}/[TIMESTAMP]/g'
Input text: "Log file dated Thu Apr 11 13:19:02 2019 have been imported."
Output text: "Log file dated [TIMESTAMP] have been imported."