
У меня есть строка ниже:
"-владелец -дата 2017-10-10 -приоритет 20 -значение xyz -выводМестоположение"
Я хочу игнорировать-приоритет 20и-outputLocationпараметры при разборе этих параметров в скрипте bash. Есть ли какой-нибудь трюк, чтобы сделать это с помощью sed/awk/grep?
примечание 1: параметры не имеют определенного порядка. примечание 2: -priority может быть числом от 0 до 100 примечание 3: -outputLocation . dir_name всегда меняется при каждом запуске
решение1
С использованиемargparse
Вы можете легко проанализировать параметры:
parser = argparse.ArgumentParser()
parser.add_argument('-owner', action='store_true')
parser.add_argument('-date')
args = parser.parse_args()
print(args.accumulate(args.integers))
А вот дальше игнорировать некоторые параметры становится буквально тривиально.
решение2
Метод 1
Здесь я заменяю содержимое «-priority 20 -outputLocation» пустым пространством.
#!/bin/bash
for i in -priority 20 -outputLocation
do
sed -i "s/"$i"//g" /tmp/l.txt
done
Метод 2
Здесь я обнуляю ценности.
awk '{$5="";$6="";$NF="";print $0}' l.txt