Mam datę jako 12/12/2013 14:32
Chcę przekonwertować ją tylko na 12/12/2013
. Ciąg może być 1/1/2013 12:32
lub 1/10/2013 23:41
Potrzebuję tylko części daty.Drukowanie tylko pierwszego pola w ciągu znaków
13
A
Odpowiedz
34
Można to zrobić łatwo z różnych narzędzi UNIX:
$ cut -d' ' -f1 <<< "12/12/2013 14:32"
12/12/2013
$ awk '{print $1}' <<< "12/12/2013 14:32"
12/12/2013
$ sed 's/ .*//' <<< "12/12/2013 14:32"
12/12/2013
$ grep -o "^\S\+" <<< "12/12/2013 14:32"
12/12/2013
$ perl -lane 'print $F[0]' <<< "12/12/2013 14:32"
12/12/2013
1
Jeśli data ciąg jest przechowywany w zmiennej, wtedy nie trzeba uruchomić zewnętrznego programu jak cut
, awk
lub sed
, ponieważ nowoczesne powłoki, takie jak bash
, mogą wykonywać bezpośrednio, co jest bardziej wydajne.
Na przykład w bash:
$ s="1/10/2013 23:41"
$ echo "${s% *}"
1/10/2013
3
$ echo "12/12/2013 14:32" | awk '{print $1}'
12/12/2013
print $1
-> Drukuje pierwszą kolumnę dołączonego sznurka. 12/12/2013
print $2
-> Drukuje drugą kolumnę dostarczonego ciągu. 14:32
Domyślnie awk traktuje znak spacji jako ogranicznik.