
Tengo la siguiente cadena:
"-propietario -fecha 2017-10-10 -prioridad 20 -valor xyz -ubicacióndesalida "
quiero ignorar-prioridad 20y-ubicación de salidaopciones al analizar estos parámetros en el script bash. ¿Algún truco para hacer esto usando sed/awk/grep?
nota1: los parámetros no tienen un orden específico. nota2: -prioridad puede ser un número entre 0 y 100 nota3: -outputLocation . dir_name cambia siempre con cada ejecución
Respuesta1
Usandoargparse
puedes analizar fácilmente los parámetros:
parser = argparse.ArgumentParser()
parser.add_argument('-owner', action='store_true')
parser.add_argument('-date')
args = parser.parse_args()
print(args.accumulate(args.integers))
A partir de ahí, es literalmente trivial ignorar algunos de los parámetros.
Respuesta2
Método 1
Aquí estoy reemplazando el contenido "-prioridad 20 -ubicación de salida" con un espacio en blanco.
#!/bin/bash
for i in -priority 20 -outputLocation
do
sed -i "s/"$i"//g" /tmp/l.txt
done
Método 2
Aquí estoy anulando los valores.
awk '{$5="";$6="";$NF="";print $0}' l.txt