Ma commande sed est,
sed '/(.*:)/d' <<< 'abcd:bcde:cdeaf'
Il doit revenir,
bcde:cdeaf
(c'est-à-dire) tous les caractères avant le premier deux-points de la ligne et le deux-points lui-même doivent être supprimés.
Mais cela ne supprime rien.
Ma confusion provient principalement de,
1) Faut-il échapper les parens pour la correspondance des motifs à l'intérieur des regex-es sed?
2) Dans les deux cas (avec échappement / sans escpaing), cela ne fonctionne pas. J'ai essayé,
sed -E '/\\(.*:\\)/d' <<< 'abcd:bcde'
printf "%s\n" "${line#*:}"
...
while read line
qui obtient le $line
, sed
devrait probablement être préféré.
sed 's/[^:]*://'
. Et vousd
n'effacez pas la ligne d'entrée, d'ailleurs, vous la modifiez avec unes///
commande d'ubstitution. Vous devez remplacer le premier bit non-colon et le colon qui le suit par rien du tout.