web-dev-qa-db-fra.com

Imprimer uniquement le premier champ d'une chaîne

J'ai une date comme 12/12/2013 14:32 Je veux le convertir en seulement 12/12/2013. La chaîne peut être 1/1/2013 12:32 ou 1/10/2013 23:41 Je n'ai besoin que de la partie date.

29
user2099444

Vous pouvez le faire facilement avec une variété d'outils 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
56
Chris Seymour
$ echo "12/12/2013 14:32" | awk '{print $1}'
12/12/2013

print $1 -> Imprime la première colonne de la chaîne fournie. 12/12/2013

print $2 -> Imprime la deuxième colonne de la chaîne fournie. 14:32

Par défaut, awk traite le caractère espace comme le délimiteur.

12
Suresh Anbarasan

Si votre chaîne de date est stockée dans une variable, vous n'avez pas besoin d'exécuter un programme externe comme cut, awk ou sed, car les shells modernes comme bash peut effectuer manipulation de chaîne directement ce qui est plus efficace.

Par exemple, dans bash:

$ s="1/10/2013 23:41"
$ echo "${s% *}"
1/10/2013
3
dogbane