2010-10-19 6 views
11

Supposons que j'ai cette phrase:Comment sélectionner une colonne donnée à partir d'une ligne de texte?

 
My name is bob. 

Et je veux copier le mot « est » de cette phrase dans une variable. Comment aurais-je accès à ce mot, sans savoir d'avance le mot que je cherche? Si je sais qu'un mot ou une chaîne spécifique se trouve dans la troisième colonne du texte d'une ligne de texte de cinq colonnes, comment puis-je prendre le mot dans la troisième colonne? J'utilise la coque Bourne.

+0

Jetez un oeil à sed et awk pour faire ce genre de traitement . –

Répondre

16
word=$(cut -d ' ' -f 3 filename) 

cut donne le troisième champ de chaque ligne (dans ce cas, il y en a 1). -d est utilisé pour spécifier l'espace en tant que délimiteur. $() capture la sortie, puis nous l'affectons à la variable word.

+0

Je ne crois pas que la queue soit nécessaire à partir de ce que l'OP voulait dire, la première ligne de nombres (maintenant supprimée) était espacée pour indiquer des colonnes plutôt que d'être contenue. –

+0

@Roger, je pense que tu as raison. Je l'ai mis à jour. –

6

vous pouvez utiliser cut, awk, etc.

Exemple:

awk '{print $3}' my_file.txt 
0
sentence='My name is bob.' 
set -- $sentence 
echo $3 

ou

sentence='My name is bob.' 
set -- $sentence 
shift 2 # or use a variable 
echo $1 
Questions connexes