Voici ce que je te propose :
Code :
- awk '!/^input|^output/{print gensub(/_\[([[:digit:]]+)\]_/, "[\\1]", "g" )}'
|
Ca sera plus adapté sur un gros fichier.
Pour info ce que tu cherche à faire est un "négative look behind" :
Avec un grep compilé avec PCRE, on peux faire ça :
Code :
- grep -oP "(?<!input|output)_\K\[[0-9]+."
|
Qu'on peux coder de façon plus fiable en perl :
Code :
- perl -lne 'print for /(?<!put)_\K\[[0-9]+./g'
|
( on retire les lignes qui contiennent put )
Edit, dans ton dernier post, tu a changé les regles en cours de route, maintenant tu veux modifier les chaines contenant input, donc :
Code :
- awk '/^input/{print gensub(/(input *[[:alnum:]]+_)([[:digit:]]+)_([[:digit:]]+);/, "\\1[\\2:0]_[\\3:0];", "g" )}'
|
Message édité par sputnick le 20-03-2010 à 16:45:02