Se ho la lista seguente in un file:Sed: Come sostituire una stringa trovato dopo un modello specifico si trova in un file
integer, parameter :: ni = 1024
integer, parameter :: nj = 256
integer, parameter :: nk = 16
e voglio cercare in base alla stringa 'ni =', e quindi sostituire la stringa che segue (in questo caso '1024') con una nuova stringa come '512' ad esempio (vorrei conservare lo spazio). Come posso usare sed per questo? Nota che vorrei semplicemente cancellare tutto ciò che viene dopo il segno di uguale, questo perché a volte la stringa non sarà un semplice numero intero, potrebbe essere qualcosa come "1.D0". E in alcuni casi potrebbero esserci dei commenti in anticipo. Quindi voglio solo cancellare ciò che è davanti al segno di uguale e sostituirlo con il nuovo valore.
Il risultato sarebbe:
integer, parameter :: ni = 512
integer, parameter :: nj = 256
integer, parameter :: nk = 16
è meglio scrivere 'sed -e 's/:: ni = [0-9] + $/:: ni = 512 /'' –
@AntonAstafiev: questo dipende da quanto si desidera che il codice funzioni. Alcune varianti di 'sed' supportano' + 'senza ulteriori opzioni; molti non lo fanno e POSIX non richiede loro di farlo. Potresti usare '[0-9] \ {1, \}' per farlo, ma ciò che ho scritto è più facilmente comprensibile. –