2017-10-17 5 views
1

Je suis complètement novice en la matière, désolé si les tags ne sont pas corrects Je ne suis pas complètement sûr des différences entre un terminal mac et unix/linux. Je travaille sur un fichier texte sur mon terminal Mac.Filtrer un fichier dans le terminal mac

J'essaie de filtrer la colonne 4 de sorte que seules les lignes avec John sont affichés. Puis l'exportation de la 3e rangée à un CSV.

exemple:

1 | 11/11/11 | 8:01 | John was here<br/> 
2 | 12/11/11 | 8:02 | Derek was here<br/> 
3 | 13/11/11 | 8:03 | John was also here<br/> 
4 | 14/11/11 | 8:04 | Bob was here<br/>       

Jusqu'à présent, je n'ai réussi à exporter la valeur que je suis à la recherche de filtrer par ...

cut -f 4 Data_File_Name | grep -o "John" | sort -r > Export_CSV_File.csv 

Il me manque les fondamentaux de montrer la données qui a seulement John tout en exportant seulement une colonne spécifique.

Toute aide serait grandement appréciée

+1

Est-ce que '' 'est un délimiteur ou que vous venez de montrer pour plus de clarté ici? Votre question n'est pas très claire, veuillez ajouter un exemple de sortie. – batMan

Répondre

1

Vous approchez de la bonne façon, mais il y a quelques problèmes.

Le délimiteur par défaut cut est le caractère de tabulation, vous devez le dire d'utiliser |: cut -d '|' -f 4 Data_File_Name

Cela vous donnera:

John was here 
Derek was here 
John was also here 
Bob was here 

Notez l'espace supplémentaire avant chaque ligne. Vous pouvez enlever ceci si vous voulez avec cut -c 2-

Le drapeau -o pour grep le fera sortir seulement la partie de la ligne qui a correspondue. Si vous souhaitez que la colonne complète, vous devez omettre ce drapeau: grep "John"

Combiné:

cut -d '|' -f 4 Data_File_Name | cut -c 2- | grep "John" | sort -r

John was here 
John was also here 

Edit: si vous utilisez l'onglet comme séparateur, et il n'y a pas d'espaces principaux avant et après les languettes (car il y avait autour des tuyaux): |

cut -f 4 Data_File_Name | grep "John" | sort -r

+0

J'ai oublié de mentionner que le délimiteur dans le fichier texte sont des tabulations – Liam

+0

Dans ce cas, n'incluez pas '-d '|' 'et cela devrait fonctionner correctement. Vous n'aurez peut-être pas besoin de la partie 'cut -c 2-' si les onglets n'ont pas d'espace après eux. – Tom

+0

Salut, comment ferais-je pour montrer seulement les temps pour les lignes avec John? J'ai essayé d'ajouter | sort -k 3> Export_File_CSV.csv mais cela n'a pas fonctionné – Liam