Ho un file che contiene molte righe (il delimitatore di riga è ~). Ogni riga, ho molti elementi che sono separati da un delimitatore '*'. Quello che voglio fare è, Avrò una riga che inizia con stringa TRN nel mio file. Può contenere 4 (incluso TRN) o più punti dati. Qualcosa di simile,Come si può sostituire una parte di una linea con sed?
TRN*1*S521000035*1020494919~
TRN*1*S521000035*1020494919*787989800~
Desidero sostituire il quarto punto dati da questa linea a abc123. vale a dire,
TRN*1*S521000035*abc123~
TRN*1*S521000035*abc123*787989800~
Ho provato ad utilizzare il comando sed con espressioni regolari
sed -i 's/^TRN\*(.*)\*(.*)\*(.*)$/abc123/g' file.txt
Ma l'intera stringa è sempre sostituito da abc123.
È possibile modificare solo il suo quarto punto di dati utilizzando il comando sed?
Ha funzionato. Grazie mille! –
Nel caso precedente volevo sostituire il quarto punto dati, solo se il primo punto dati è TRN. Così ho ottimizzato il comando come 'sed -r -i 's/^ (TRN \ *) ((\ w + \ *) {2}) \ w * (.*)/\ 1 \ 2abc123 \ 4/g '' –