Я ищу решение awk или sed, я не гений ни в том, ни в другом. Я прочитал все предложения, которые появились, когда я начал это печатать.
У меня есть файл со строками данных:
name
thisdate=Sep 2 23:59:59 2022 GMT
name
thisdate=Sep 15 23:59:59 2022 GMT
Имена и даты/время все разные, номера дней всегда находятся на одном и том же месте и всегда занимают одинаковое количество символов (2), часы/минуты/секунды всегда находятся на одной и той же позиции в строке, и это не в каждой строке, thisdate
это всегда будущая дата, и нет пустых строк.
Я пытаюсь удалить время из этих строк даты, пытаясь отключить ключ thisdate=
(это пробел перед thisdate
), а затем удалить символы в позициях 18-26 (если я правильно посчитал)
Я пробовала пару вещей, но в основном искала что-то, что соответствовало бы моим потребностям и указывало бы мне правильное направление.
952 sed 's/^\(.\{18\}\)\(.\{26\}\)/\1/' file <--this may not have worked as I didn't key on a match?
958 sed -i 's/thisdate=(.{11})18/\26/' file
959 sed -i 's/thisdate=(.{10})17/\25/' file
Я уверен, что я что-то упускаю, но если кто-то может указать мне правильное направление, я буду благодарен!
решение1
Похоже, достаточно будет просто удалить 9 символов после 6-го символа thisdate=
:
sed 's/^\( thisdate=.\{6\}\).\{9\}/\1/' file
Для данных это сгенерирует
name
thisdate=Sep 2 2022 GMT
name
thisdate=Sep 15 2022 GMT