Ось sed
рішення:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Що sed 's/^://'
робить команда , це замінити s
символ двокрапки :
з початку ^
кожного рядка порожнім рядком //
.
Ось хитре awk
рішення, коли ми змінюємо роздільник поля ^:
, описаний вище, і виводимо друге поле (кожного рядка):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
Завдання може бути виконане також grep
( пояснення ), ймовірно, це може бути найшвидшим рішенням для великого обсягу даних:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Або обробити файл безпосередньо за допомогою наступної команди, де обмеження ^
видалено:
grep -Po 'Logfile started :\K.*' process.log
Сказане може бути досягнуто також за допомогою sed
та захопленні груп ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Де вираз ^.*<something>.*$
буде відповідати цілому рядку, який містить <something>
. Команда s/old/new/
замінить цей рядок вмістом першої групи захоплення (вираз у дужках може бути більш конкретним). Параметр -r
дозволяє розширити регулярні вирази. Цей параметр -n
придушує нормальний вихід sed
і, нарешті, команда p
надрукує відповідність.