Script bash: Buscar palabra en archivo y copiar bloque debajo de esta palabra.

Imagen de carlosgim
0 puntos

Hola a todos,

resulta que estoy tratando de hacer un script que lea un archivo "nombre.dat" y lo recorra buscando una palabra en particular, una vez que la encuentra debe copiar un bloque por encima o por debajo de esta. No encontré nada en el foro y busqué en la red. Si alguien tiene alguna idea será bienvenida.

Saludos a todos y gracias.

Imagen de razaAztk
+1
0
-1

Hace tiempo hice un script que hacia uso de algo parecido a lo que quieres hacer...........
Creo que el fragmento de código que te puede servir es el sig.: (el cual es una función)

instalar_q() {
	# Etiquetas que delimitan el texto a mostrar
	ETIQUETA1='/\['$1'\]/'
	ETIQUETA2='/\[\/'$1'\]/'
	# Descripción de cada programa
	echo ''
	gawk "$ETIQUETA1, $ETIQUETA2" $FILECONF | grep -v "\[*\]"
	PROGRAMA=`gawk "$ETIQUETA1, $ETIQUETA2" $FILECONF | grep "^~:*" | tr -s '~:' ' '`
#	echo $PROGRAMA
	REPLY='0'
	while ([ "$REPLY" != "y" ] && [ "$REPLY" != "Y" ] && [ "$REPLY" != "n" ] && [ "$REPLY" != "N" ] && [ "$REPLY" != "" ])
	do
		echo -e $YELLOW\\c
		read -p "¿ Instalar$PROGRAMA?(y/N): "
		echo -e $DEFAULT\\c
		case $REPLY in
			"y"|"Y")
				echo -e $GREEN"Se instalará $PROGRAMA"$DEFAULT
				PAQUETES=`gawk "$ETIQUETA1, $ETIQUETA2" $FILECONF | grep "\[INST\]" | tr -s '\[INST\]' ' '` 
				PROGRAMAS_INSTALAR=$PROGRAMAS_INSTALAR$PAQUETES
#				echo $PROGRAMAS_INSTALAR
			;;
			"n"|"N"|"")
				echo -e $RED"No se instalará $PROGRAMA"$DEFAULT
#				echo $PROGRAMAS_INSTALAR
			;;
		esac
	done
return 0
}

En el fichero $FILECONF se tiene varias secciones con el formato:

[<ETIQUETA>]
[INST]<PAQUETES>
~:<NOMBRE_PROGRAMA>:~
<DESCRIPCIÓN>
[/<ETIQUETA>]

E invocas a la función con la etiqueta a buscar:

instalar_q "ETIQUETA"

Si necesitas ver todo el código del script pa' darte una idea, descargalo de AQUÍ

Saludos!

+1
0
-1

void hey(int x,int y)
{
if (x && y)
 printf("http://libertadhack.blogspot.com/");
else
 printf("http://libertadpunk.blogspot.com/");
}
Imagen de alfplayer
+1
0
-1

Para esto posiblemente se puede usar grep con las opciones -A o -B o -C para imprimir el contexto (líneas anteriores o posteriores) a las líneas de la búsqueda que coinciden.

+1
0
-1