J'ai un fichier de configuration que je souhaite modifier essentiellement les lignes non motivées, mais pas les lignes commentées. J'utilise Par exemple, j'ai un fichier appelé fichier.txt: p> je veux remplacer "Test" avec "test" mais ne touchez pas les lignes commentées. La sortie finale doit indiquer: p> sed code>.
5 Réponses :
$ sed '/^[[:space:]]*#/!s/test/TEST/g' infile TEST # test # test TEST
Bien rangé. J'aurais attendu mal d'être plus lisible, mais c'est bien.
Je ne suis pas un expert code> SED CODE>, mais le regexP pour correspondre à ces lignes va regarder quelque chose em> comme ceci: p>
^ [^ #]. * Test code> p>
^ code> - début de la ligne li>
[^ #] code> - premier caractère, tout sauf # li>
. * code> - quelques caractères supplémentaires, indéfini li>
test code> - la chaîne que vous recherchez li>
ul>
awk:
Si vous avez Ruby (1.9 +)
ruby -ne 'print $_ !~ /^\s*#/ ?gsub("test","TEST"):$_' file
Pour ignorer les commentaires qui commencent par un dans votre cas, il devient: P > # code> lors de la substitution, vous pouvez utiliser la commande suivante:
TEST
# test
TEST # test
TEST