Предполагая, что ваше содержимое находится в файле x.txt
, вы можете использовать выражение sed
:
sed -e 's/#.*//' -e 's/=.*$/="&"/g' -e 's/=//2' x.txt
Первое выражение помещает все после знака =
в кавычки. Второе выражение удаляет лишний знак =
, а третье выражение удаляет все, что находится между #
и "
, поскольку они являются комментариями.
Далее RHS будет заключен в одинарные кавычки:
sed -e "s/#.*//" -e "s/=.*$/='&'/g" -e "s/=//2" x.txt
Обратите внимание, что ваше регулярное выражение не будет работать, даже если -o
будет распознано вашей реализацией grep
. Вам также нужно -E
, чтобы включить расширенные регулярные выражения. Предполагая, что у вас есть perl
, что у вас, вероятно, есть, вы можете попробовать:
$ Data="Logs/2018-12-03/log.txt:3:2018-12-03 00:00:04,333 452621453 [blah blah blah"
$ echo "$Data" | perl -lne '/[0-9]{4}-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1]) (2[0-3]|[01][0-9]):[0-5][0-9]/ && print "$.:$&"'
1:2018-12-03 00:00
Но нужно ли вам так усложнять регулярное выражение? Разве этого недостаточно?
$ echo "$Data" | perl -lne '/\d{4}-\d{2}-\d{2} \d{2}:\d{2}/ && print "$.:$&"'
1:2018-12-03 00:00