
Ich habe die folgende Zeichenfolge:
"-owner -date 2017-10-10 -priority 20 -value xyz -outputLocation "
Ich möchte ignorieren-Priorität 20Und-AusgabeortOptionen beim Parsen dieser Parameter im Bash-Skript. Gibt es einen Trick, um dies mit sed/awk/grep zu tun?
Hinweis 1: Parameter haben keine bestimmte Reihenfolge. Hinweis 2: -priority kann eine Zahl zwischen 0 und 100 sein. Hinweis 3: -outputLocation. dir_name ändert sich immer bei jedem Lauf.
Antwort1
Verwenden vonargparse
Sie können die Parameter einfach analysieren:
parser = argparse.ArgumentParser()
parser.add_argument('-owner', action='store_true')
parser.add_argument('-date')
args = parser.parse_args()
print(args.accumulate(args.integers))
Von da an ist es buchstäblich trivial, einige der Parameter zu ignorieren.
Antwort2
Methode 1
Hier ersetze ich den Inhalt „-priority 20 -outputLocation“ durch Leerzeichen.
#!/bin/bash
for i in -priority 20 -outputLocation
do
sed -i "s/"$i"//g" /tmp/l.txt
done
Methode 2
Hier setze ich die Werte auf Null.
awk '{$5="";$6="";$NF="";print $0}' l.txt