online - ¿Qué hace / 1 en sed?
sed-e linux (2)
Encontré esta pregunta realmente relevante para lo que quería: Analizar utilizando awk o sed en Unix , sin embargo, no puedo averiguar qué hace lo siguiente:
''s//([,=]/) //1/g''
Sé que g hace una sustitución global pero realmente no puedo entender lo que está sucediendo dentro del contexto de la pregunta.
Aquí hay un ejemplo simple:
$ echo ''abcabcabc'' | sed ''s//(ab/)c//1/''
ababcabc
$ echo ''abcabcabc'' | sed ''s//(ab/)c//1/g''
ababab
$ echo ''abcabcabc'' | sed ''s//(ab/)/(c/)//1d/2/g''
abdcabdcabdc
En el primer comando, solo se ve afectada la primera coincidencia. En el segundo comando, cada partido se ve afectado. En ambos casos, el /1
refiere a los caracteres capturados por los paréntesis de escape.
En el tercer comando, se especifican dos grupos de captura. Son referidos usando /1
y /2
. Se pueden utilizar hasta nueve grupos de captura.
Además del operador g
(global) (o sin él, la primera coincidencia), puede especificar una coincidencia particular:
$ echo ''aaaaaa'' | sed ''s/a/A/4''
aaaAaa
/(.../)
capturaría los caracteres especificados dentro de los parens y /1
se usaría para hacer referencia a la primera coincidencia, esto es parte de la expresión regular.