me gustaría sustituir un texto con un valor incremental. Teniendo en cuenta xx archivo:mínimo de la SED número
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
y comando sed:
for n in seq 3;do sed -e 's/<RecordID>\d/<RecordID>'`echo $n`'/' xx; done
el comando echo $n
no consigue incrementa.
Tryed también:
n=1; sed -e 's/<RecordID>/<RecordID>'`echo $n ;let n=$n+1`'/g' xx
pero sin éxito.
considerando sólo sed (sin awk o perl) ¿cómo puedo tener el campo RecordID incrementado como en:
<outro>dfdfd</outro>
<RecordID>1</RecordID>
<outro>dfdfd</outro>
<RecordID>2</RecordID>
<outro>dfdfd</outro>
<RecordID>3</RecordID>
<outro>dfdfd</outro>
Como puede ver, todo esto se vuelve muy complicado con 'sed' porque tiene que hacer el incremento fuera de él en un shell y luego llama a una instancia de sed para procesar cada línea. Si esto es sólo para fines académicos, está bien, pero realmente debes usar 'awk' para esto porque puede hacer Nativity matemática. De hecho, toda la secuencia de comandos awk es esta una línea corta: 'awk '/ RecordID/{sub (" [0-9] + ", ++ i)} 1' infile> archivo de salida' – SiegeX
@SiegeX: estoy de acuerdo con su básico premisa - sed no es la herramienta correcta para el trabajo. Supongamos que los ID de los registros no se presentan en orden en el archivo; el ejemplo los muestra en orden, pero no está claro si los números son necesariamente monótonamente crecientes o incluso en secuencia ... ¿con qué facilidad 'awk' maneja la captura y luego modificación de parte de la línea? Mi sospecha es "no muy fácil"; es en ese momento cuando me dirijo a Perl (aunque aceptaría Python como una alternativa completamente adecuada para Perl; por casualidad, sé que Perl es mejor que Python). ¿Alguna opinión? –
@Jonathan Cuando desee hacer algo desordenado con awk, generalmente requiere el uso de matrices asociativas. Y aunque puede ser un poco incómodo (sin juego de palabras), ciertamente no lo pondría en la categoría "no muy fácil". No estoy muy seguro de cómo quiere que cambie la entrada de O/P para mostrar esto, pero he aquí un ejemplo que lancé hace poco que hizo un uso exhaustivo de las matrices asociativas de awk http://stackoverflow.com/questions/4443583/bash-script-that-analyze-report-files/4445671 # 4445671 – SiegeX