シェル スクリプトで一致する値と対応する値を見つける方法

シェル スクリプトで一致する値と対応する値を見つける方法

以下の文字列があります:

「-所有者 -日付 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

関連情報