/ / piccolo problema con regex in sed - regex, bash, sed

piccolo problema con regex in sed - regex, bash, sed

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 № 1

Questo 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