Il mio comando sed è:
sed '/(.*:)/d' <<< 'abcd:bcde:cdeaf'
Deve tornare,
bcde:cdeaf
(vale a dire) tutti i caratteri prima dei primi due punti nella linea e i due punti stessi devono essere rimossi.
Ma questo non sta rimuovendo nulla.
La mia confusione deriva principalmente da,
1) Le parentesi per il pattern matching devono essere sfuggite all'interno di sed regex-es?
2) In entrambi i casi (con escape / no escpaing), non funziona. Provai,
sed -E '/\\(.*:\\)/d' <<< 'abcd:bcde'
printf "%s\n" "${line#*:}"
...
while read line
che ottiene il $line
, probabilmente sed
dovrebbe essere preferito.
sed 's/[^:]*://'
. E non staid
eliminando la riga di input, a proposito, la stai modificando con uns///
comando ubstitution. Devi sostituire il primo bit non i due punti e i due punti che lo seguono senza nulla.