Ho il seguente file di testsed - Commentando una linea corrispondente ad una stringa specifica e che non è già commentata
AAA
BBB
CCC
Utilizzando il seguente sed posso commentare la linea diBBB.
# sed -e '/BBB/s/^/#/g' -i file
Mi piacerebbe solo commentare la riga se non ha già un # all'inizio.
# sed -e '/^#/! /BBB/s/^/#/g' file
sed: -e expression #1, char 7: unknown command: `/'
Qualche idea su come posso raggiungere questo obiettivo?
Ha funzionato, grazie! –
Questo modificherà sempre la linea corrispondente per iniziare con un singolo #. Quindi se inizia con tre '#' s dopo questo comando, lo "pulirà" per iniziare con uno '#'. Per alleviare questo problema se si tratta di un problema, è sufficiente modificare la parte corrispondente di conseguenza (ad esempio 'sed -e '/^BBB /' ...) –
'sed'/^ # BBB/'' intendi. Ma se BBB è da qualche parte nel mezzo non funzionerà. C'è un'opzione per scrivere 'sed '/^# /! {/ BBB/s/^/# /} ''che funzionerà molto meglio ma la mia soluzione iniziale è molto più semplice purché ne conosca il limite. – aragaer