ho questa stringa:
data="week 50; data; data; data; data"
vorrei cancellare la parte della settimana da esso usando sed, in modo da ottenere: dati; dati; dati; dati Ho escogitato questo, ma a quanto pare non funziona, hai idea del perché? Dov'è la regola sbagliata?
codice:
echo ${data} | sed "/%week.*%;/s/%week.*%;//"
Chers
risposte:
5 per risposta № 1Questo dovrebbe essere sufficiente:
echo ${data} | sed "s/week[^;]*;//"
Produzione:
data; data; data; data
Questo corrisponde week
più fino al punto e virgola successivo compreso[^;]*;
) e lo rimuove.
Se si desidera rimuovere anche lo spazio estraneo, procedere come segue:
echo ${data} | sed "s/week[^;]*; *//"
1 per risposta № 2
Vuoi veramente rimuovere il campo separato da punto e virgola contenente del testo che inizia con "settimana" o è davvero che vuoi solo rimuovere il primo campo? Tener conto di:
$ echo "week 50; data; data; data; data" | cut -d; -f2-
data; data; data; data
$ echo "week 50; data; data; data; data" | sed "s/[^;]*;//"
data; data; data; data