Удаление дат внутри текстового файла
Следующая команда удалит все даты формы ✱ aa/bb/cccc
, где aa
= bb
<13. Исходный файл будетскопировать в <code>yourFile.txt.bak в качестве резервной копии, и новый текст с удаленными датами заменит старый файл.
sed -E -i.bak 's:\b(0[0-9]|1[0-2])/\1/[0-9]{4}\b::g' yourFile.txt
Если вы хотите вставить что-то вместо того, чтобы просто удалить даты, вы можете сделать это, написавзамена между двумя ::
.Например, sed … 's:…:deleted date:/g' …
заменит каждую соответствующую дату текстом deleted date
.
. Обратите внимание, что для вашего критерия не имеет значения, является ли формат даты dd/mm/yyyy
или mm/dd/yyyy
, посколькуВас интересуют только даты, когда dd
и mm
равны.
Извлечение определенных дат из текстового файла
Если вы не хотите удалять, а только извлекатьконкретные даты, указанные в вашем комментарии, вы можете использовать следующую команду:
grep -Eo '\b([0-9]{2}/){2}[0-9]{4}\b' yourFile.txt | awk -F/ '$1<13 && $1!=$2'
Это извлечет все даты в формате dd/mm/yyyy
(!) , где mm
≠ dd
<13. Даты печатаются в порядке появления на стандартном экране.Если вы хотите сохранить их в файл, добавьте <code>> yourOutputFile.txt в конец команды.