1 votes

ajouter à la fin de la ligne sed / awk

C'est probablement facile et quelque chose ne colle pas avec moi et mon manque de café en ce moment. J'ai un fichier avec plusieurs lignes qui commencent par une tabulation puis le mot GROUP quelque chose {

Certaines de ces lignes, pour une raison quelconque, n'ont pas de crochets dans certaines conditions. La solution rapide est d'utiliser sed/awk pour ajouter le crochet à cette ligne mais pas aux lignes où le crochet existe déjà. Je suis à mi-chemin avec mais comme vous pouvez le voir, cela ajoutera le crochet ouvert à chaque ligne qui commence par une tabulation et un GROUPE.

sed '/[ \t]GROUP/ s/$/ {/' scst.conf.test > greg.scst.out

4voto

Khaled Points 35208

Vous pouvez essayer ceci sed commandement :

$ sed '/[ \t]GROUP/ s/{*$/ {/' scst.conf.test > greg.scst.out

2voto

darlinton Points 1673

Vérification de GROUP something sans { et la référencer puis la remplacer par \1 { .

sed 's|\([ \t]GROUP.*\)[^{]$|\1 {|' yourfile

2voto

Ross Light Points 1994

Avec le fichier de test suivant comme test.txt :

    GROUP blah {
    GROUP blah {
    GROUP blah
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {

Le script suivant fait le travail :

sed -r 's/\tGROUP(.*)[^{]$/&{/' test.txt

Le résultat ressemble à ceci :

    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {
    GROUP blah {

Est-ce correct ? Ce qu'il fait, c'est rechercher les lignes qui ont des caractères tab->GROUPEMENT quelconques mais qui n'ont pas { à la fin. Il la remplace par la ligne correspondante (c'est ce que fait le &) et ajoute ensuite un {.

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