web-dev-qa-db-fra.com

Extraire le deuxième mot d'une ligne d'un fichier texte

J'ai actuellement besoin d'extraire le deuxième mot (CRISTOBAL) en ligne dans un fichier texte.

                 *   CRISTOBAL  AL042014  08/05/14  12  UTC   *

Le deuxième mot de la ligne "CRISTOBAL" variera d'un jour à l'autre, il me suffit donc de trouver un moyen d'extraire JUSTE le deuxième mot/caractère de la ligne.

13
Aaron Perry

2e mot

echo '*   CRISTOBAL  AL042014  08/05/14  12  UTC   *' | awk  '{print $2}'

vous donnera CRISTOBAL

echo 'testing only' | awk  '{print $2}'

vous donnera only

Vous devrez peut-être le modifier si la structure de la ligne change.

2e mot des lignes d'un fichier texte

Si votre fichier texte contient les deux phrases suivantes

this is a test
*   CRISTOBAL  AL042014  08/05/14  12  UTC   *

fonctionnement awk '{print $2}' filename.txt reviendra

is
CRISTOBAL

2ème caractère

echo 'testing only' | cut -c 2

Cela vous donnera e, qui est le 2ème caractère, et vous devrez peut-être le modifier pour qu'il corresponde également à vos besoins.

27
zedfoxus

En cas de sed est nécessaire/uniquement disponible

sed '^ *[^ ]* *\([^ ]*\) .*/\1/' YourFile

Prenez le deuxième groupe non vide (en supposant qu'il y ait au moins 1 blanc après le mot

Mais je préfère couper pour la vitesse (et awk si une manipulation est nécessaire).

En fait, cela dépend principalement de la prochaine action dans le script (le cas échéant).

1
NeronLeVelu