So finden Sie Übereinstimmung und entsprechenden Wert im Shell-Skript

So finden Sie Übereinstimmung und entsprechenden Wert im Shell-Skript

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 vonargparseSie 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

verwandte Informationen