Extraire une ligne si elle contient un mot dans une colonne spécifiée

Je veux extraire une ligne si elle contient un mot dans une colonne spécifiée d’un fichier texte. Comment puis-je le faire sur une commande unix à une ligne pour le faire? Peut-être avec cat , echo , cut , grep avec plusieurs piples ou quelque chose.

J’ai un fichier texte qui a regardé avec ce format

 #SentenceIDSentence1Sentence2Other_unknown_number_of_columns ... 

Voici un exemple du fichier texte:

 021348 this is the english sentence with coach . c'est la phrase française avec l'entraîneur . And then there are several nonsense columns like these . 923458 this is a another english sentence without the word . c'est une phrase d'une autre anglais sans le bus mot . whatever foo bar nonsense columns 2134234 $%^& 

La commande devrait sortir si le mot que je cherche est coach dans la 2ème colonne:

 021348 this is the english sentence with coach . c'est la phrase française avec l'entraîneur . And then there are several nonsense columns like these . 

Je peux le faire avec python en tant que tel, mais je recherche une commande unix ou quelque chose d’un seul côté:

 outfile = open('out.txt') for line in open('in.txt'): if "coach" in line.split(): print>>outfile, line 

    Et ça?

     awk -F'\t' '{if($2 ~ "coach") print} your_file 
    • -F'\t' -> crée le séparateur comme onglet.
    • $2 ~ "coach" -> cherche “coach” dans le deuxième champ.
    • print $0 ou print -> imprime la ligne entière.

    modifier

    sudo_O a suggéré ce qui est encore plus court:

     awk -F'\t' '$2~/coach/' file 

    Pour ce genre de besoin, j’utilise toujours awk:

    awk -F ‘\ t’ ‘$ 2 ~ / coach / {print $ 0;}’

    Vous avez access à toutes les colonnes avec $ x, $ 0 contient la ligne entière. Le test est fait avec regexp, assez simple dans ce cas, donc il est vraiment puissant si votre besoin devient plus compliqué.