En utilisant awk
:
One-liner:
awk 'BEGIN{FS=OFS="="}match($2,/[0-9]+/){sub(/[0-9]+/,substr($2,RSTART,RLENGTH)+1,$2)}1' infile
ou même cela fonctionne pour l'échantillon d'entrée donné
awk -F'[^[:digit:]]+' '{t=$0; sub(/-[0-9]+/,"-"$3+1,t); print t }' infile
Entrée:
$ cat infile
$string1=\-9-0
$string2=\-99
$string3=\-999-0-4
Sortie:
$ awk 'BEGIN{FS=OFS="="}match($2,/[0-9]+/){sub(/[0-9]+/,substr($2,RSTART,RLENGTH)+1,$2)}1' infile
$string1=\-10-0
$string2=\-100
$string3=\-1000-0-4
$ awk -F'[^[:digit:]]+' '{t=$0; sub(/-[0-9]+/,"-"$3+1,t); print t }' infile
$string1=\-10-0
$string2=\-100
$string3=\-1000-0-4
Mieux Lisible:
awk '
BEGIN{
FS=OFS="="
}
match($2,/[0-9]+/){
sub(/[0-9]+/,substr($2,RSTART,RLENGTH)+1,$2)
}1
' infile
pourquoi est une chaîne changé pour augmenter? et vous devriez aussi poster ce que vous avez essayé de résoudre ceci ... – Sundeep
Juste essayé de différencier comment la chaîne incrémentée ressemblera à un exemple. Je n'ai pas résolu cela en cherchant de l'aide pour obtenir cette solution –
vous devez mieux formater la question, mettre l'entrée et la sortie dans deux blocs de code séparés ... changer seulement les choses que vous devez changer ... et ce forum est à propos de obtenir de l'aide sur le code que vous avez essayé mais n'a pas fonctionné .. pas sur l'obtention du code entier ... – Sundeep