
以下の文字列があります:
「-所有者 -日付 2017-10-10 -優先度 20 -値 xyz -出力場所」
無視したい-優先度20そして-出力場所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