Ho questo file
a deiauk Biking US 200 G b kespaul 202 A c deiauk NY 222 5 Z  E io desidera far corrispondere la stringa esatta 200 utilizzando awk. Quindi il mio risultato dovrebbe essere 
a deiauk Biking US 200 G Ecco il mio codice
awk -F " " "{if($(NF-1) ~ /200/){a[$1]++}}END{for (var in a){print a[var] " " var " " $(NF-1)}}" file.txt Ma dopo che ho ricevuto tutte le righe.
Commenti
Risposta
 Dato che desideri una corrispondenza esatta, perché non utilizzare ==? 
$ cat >file a deiauk Biking US 200 G b kespaul 202 A c deiauk NY 222 5 Z a auie auie 200 B b nrst nrst 200 C $ awk "$(NF-1)==200{a[$1]++}END{for (v in a){print v,a[v]}}" file a 2 b 1  Puoi anche limitare la corrispondenza con /^200$/: 
$ awk "$(NF-1)~/^200$/{a[$1]++}END{for (v in a){print v,a[v]}}" file a 2 b 1 Modifica:
 Ho provato il tuo comando e dovrebbe funzionare. Sei sicuro della tua -F " "? 
Comm ents
-  Sì -F ' 'va bene nella mia ituazione. Non ' non so perché, ma ho ancora lo stesso problema
Risposta
 Con awk, basta: 
awk "$0~/ 200 /" file  Oppure sed (\s corrisponde a qualsiasi spazio vuoto): 
sed -n "/\s200\s/p" file  A grep soluzione (-P per perl regex): 
grep -P "\s200\s" file  Se deve essere puro bash: 
while read a; do [[ $a =~ " 200 " ]] && echo $a; done <file  Se “non sei sicuro che ci siano spazi, tabulazioni, qualunque cosa ([[:space:]] è come \s, nelle soluzioni sed e grep sopra ): 
while read a; do [[ $a =~ [[:space:]]200[[:space:]] ]] && echo $a; done <file Commenti
-  In grepfunzionerà anche senza-P,grep '\s200\s' file
Risposta
Penso che questo s aiuterà. Questo stamperà solo la riga contenente il motivo. Nel tuo caso il pattern è 200
grep "200" file-name 
awkstampi un una sola riga? Ti sei nemmeno preso la briga di capire cosa dovrebbe fare?200; ii) il primo campo e iii) il penultimo campo. Perché ti aspetteresti che stampi lintera riga? Che output stai effettivamente ottenendo?