2013-07-19 4 views
1

J'ai exécuté la commande ci-dessous et j'ai stocké les données dans le fichier sample.txt.Trouver le mot après le modèle en utilisant Awk

chkconfig --list | grep postfix > sample.txt 

Maintenant, ce fichier contient la sortie ci-dessous:

postfix   0:off 1:off 2:on 3:on 4:on 5:on 6:off 

Maintenant je dois extraire la chaîne après 2:. La sortie doit être on

Est-ce que de toute façon nous pouvons le trouver en utilisant awk ou grep?

+2

essayer '.... | grep -PO '(? <= 2:) \ w +'' – Kent

+0

@Kent va vous donner le '22:' aussi, sans doute un espace avant '2' devrait suffire –

+0

Ou tout caractère non-chiffre. – lindhe

Répondre

2

Une façon avec awk sans passer par la création de fichier temporaire si l'extraction est le seul but du fichier temporaire:

chkconfig --list | awk '/postfix/{$0=substr($4,3)}1' 
1

awk peut faire:

awk -F '[: ]+' '{print $7}' 

Aussi, vous ne ont pas besoin grep. A la suite awk fera le travail:

chkconfig --list | awk -F '[: ]+' '$1 == "postfix" {print $7}' 
+0

Merci pour vos commentaires. – Dilip

+0

Merci pour votre réponse rapide. Mais je n'arrivais toujours pas à obtenir le résultat. Mon exigence est, j'ai sortie dans le fichier "sample.txt". Je veux grep le statut de "2:", qui est "" sur ". Pouvez-vous s'il vous plaît me fournir la solution pour cela. – Dilip

+0

La commande ci-dessus awk vous donnera 'on' comme sortie qui est à côté de' 2: '. N'avez-vous pas la même sortie? – anubhava

Questions connexes