Je veux tout supprimer avant le dernier espace d'un fichier texte de la CLI
Exemple de texte:
2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar
La chaîne qui doit rester est dump-2015-03-02-21-34.tar
Il y a beaucoup de choix en utilisant la ligne de commande:
$ echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | cut -c32-
dump-2015-03-02-21-34.tar
$ echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | sed 's/.* //'
dump-2015-03-02-21-34.tar
$ echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | grep -oP "\S+$"
dump-2015-03-02-21-34.tar
$ echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | awk {'print $NF'}
dump-2015-03-02-21-34.tar
$ echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | Perl -pe 's/.* //'
dump-2015-03-02-21-34.tar
$ echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | rev | cut -d ' ' -f 1 | rev
dump-2015-03-02-21-34.tar
sed
est par défaut gourmand, alors supprimez tout jusqu'au dernier espace:
sed 's/.* //'
ou utilisez cette idiome awk
:
awk '$0=$NF'
Essayez grep
:
echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | grep -Eo "[^ ]+$"
Vous pouvez également utiliser tr
et cut
ensemble:
echo "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar" | tr -s ' ' | cut -d' ' -f4
Pourquoi devrait-on laisser python
derrière:
python2 -c 'print "2015-03-02 21:34:15 20480 dump-2015-03-02-21-34.tar".split()[3]'
Tous les éléments ci-dessus produisent une sortie: dump-2015-03-02-21-34.tar