Oto sed
rozwiązanie:
$ echo ':29.06.2019 23:03:17' | sed 's/^://'
29.06.2019 23:03:17
Polecenie sed 's/^://'
zastępuje s
znak dwukropka :
na początku ^
każdego wiersza pustym ciągiem //
.
Oto trudne awk
rozwiązanie, w którym zmieniamy separator pól na ^:
opisany powyżej i wyprowadzamy drugie pole (każdej linii):
$ echo ':29.06.2019 23:03:17' | awk -F'^:' '{print $2}'
29.06.2019 23:03:17
Zadanie można wykonać również za pomocą grep
( objaśnienia ), prawdopodobnie jest to najszybsze rozwiązanie dla dużej ilości danych:
$ echo 'Logfile started :29.06.2019 23:03:17' | grep -Po '^Logfile started :\K.*'
29.06.2019 23:03:17
Lub przetworz plik bezpośrednio za pomocą następującego polecenia, w którym ograniczenie ^
zostanie usunięte:
grep -Po 'Logfile started :\K.*' process.log
Powyższe można osiągnąć również poprzez sed
przechwytywanie grup ()->\1
:
sed -nr 's/^.*Logfile started :(.*)$/\1/p' process.log
Gdzie wyrażenie ^.*<something>.*$
pasuje do całej linii, która zawiera <something>
. Polecenie s/old/new/
zastąpi ten wiersz treścią pierwszej grupy przechwytywania (wyrażenie w nawiasach może być bardziej konkretne). Opcja -r
włącza rozszerzone wyrażenia regularne. Opcja -n
pominie normalne wyjście, sed
a na końcu polecenie p
wydrukuje dopasowania.