3 votes

ajouter un mot à la fin d'une ligne dans un fichier txt

J'ai un fichier qui devrait avoir "OK" à la fin d'une certaine ligne

la ligne qui devrait être modifiée est la première ligne ne se terminant pas par "OK"

Je peux grep le fichier pour obtenir la ligne à modifier en utilisant le code suivant

grep -vnm 1 OK '/content2'

J'ai besoin d'aide pour ajouter le motif OK à la fin de cette ligne.

Exemple :

si le contenu du fichier comporte les lignes suivantes

aaaaaaaaaaaaaa OK
bbbbbbbbbbbbbb OK  
cccccccccccccc  
dddddddddddddd
eeeeeeeeeeeeee OK

J'ai besoin d'ajouter OK à la ligne contenant l'élément cccccccccccc uniquement

4voto

zwets Points 11050

Vous pouvez utiliser les éléments suivants awk programme :

awk -v s=" OK" '/OK$/ { print; } !/OK$/ { print $0 s; s=""; }'

Cela fonctionne comme suit :

/OK$/ { print; }

imprime toute ligne se terminant par OK tel quel, alors que

!/OK$/ { print $0 s; s=""; }

imprime toute ligne no se terminant par OK avec la valeur de la variable s annexé.

Variable s initialement est la chaîne de caractères ' OK' . Elle devient la chaîne vide après la première rencontre d'une ligne ne se terminant pas par . OK .

更新情報

De manière encore plus concise :

awk -v s=" OK" '!/OK$/ { print $0 s; s=""; } /OK$/'

élimine le { print; } action pour le /OK$/ comme { print; } est l'action par défaut.

Correction

En regardant à nouveau la question, il n'est pas dit que la OK devrait être ajouté à la première ligne n'ayant pas OK mais plutôt à la première ligne qui ne comporte pas d'élément OK qui suit une ligne qui fait ont un OK . Donc, nous devons garder une variable, c qui signale qu'au moins un OK a été vu, et une variable d qui indique que nous avons terminé :

awk ' /OK$/ { if (!d) c=1; } 
     !/OK$/ { if (c) d=1; } 
     c && d { s=" OK"; c=0; }
     { print $0 s; s=""; }'

-1voto

Harris Points 2548
sed '0,/[^O][^K]$/{s/[^O][^K]$/& OK/}' filename

filename est le nom de votre fichier d'entrée.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X