カンマ区切り値(軍事時間形式のタイムアウト/タイムアウト、たとえば0800、0900、1300)を含むfile1があります。ファイル1の各行には、日付別のタイムアウト/タイムアウトが含まれています。
サンプルファイル1:
Name, Position Level 3
0800, 1800
0900, 1200, 1230, 2000
0901, 2100
ファイル2には以下が含まれます(1時間あたりの料金):
Position Level 1, 100
Position Level 2, 200
Position Level 3, 300
Position Level 4, 400
Position Level 5, 500
各行に最初の項目と最後のタイムアウト、および1日にレンダリングされた時間を示す複数行のファイル3を作成する必要があります。最後の行には、その月にレンダリングされた時間(1日あたりの合計時間)* 1時間あたりのレートで計算された給料が表示されます。
ファイル3:
Name, Position Level 3
0800, 1800, 10
0900, 2000, 10.5
0901, 2100, 10.983
9444.9
ベストアンサー1
提供するファイルはカンマで区切られず、カンマで区切られます。カンマの後のスペースを削除する必要があります。そうしないと、以下の方法が正しく機能しない可能性があります。
始めるための擬似コードは次のとおりです。
正しい文字を使用するように注意してください。
私のアプローチは次のとおりです。
- file1 の最初の行を読み取り、保存します。
FIRSTLINE="`head -n 1ファイル1`"
- ファイル3に書きます
echo "$FIRSTLINE" >> ファイル 3
- file1の最初の行を読み取り、カンマで区切られた2番目の引数を取得します。
POSLVL="`head -n 1 file1 | awk -F , '{print $2}'`"
変数に位置レベルがあるので、file2を検索してこのコードの1時間あたりのレートを把握できます。
RATE = `grep "$ POSLVL"ファイル2 | RATE=`grep "$POSLVL" ファイル2 awk -F , '{print $2}'`
その後、次のように file1 の各行を読み続けることができます。
MAXLINES=`wc -l ファイル 1 awk '{print $1}'' ライン=2 $LINE -le $MAXLINESもテストしてみてください。 する READLINE="`head-n $LINE | tail-n 1`" LINE_HOURS=0 総費用= 0 #入力/出力ペアの数を決定するためにカンマの数を数える カンマ=`echo $READLINE | grep -o , |toilet -l awk '{print $1}'' #カンマ数= 1の場合(入力/出力ペア1個) #最初と2番目の数字を抽出 #改行なしでこの数字をfile3に書き込みます(echo -n "$ NR1、$ NR2") #視差を計算します #LINE_HOURSに追加 #カンマ数が2より大きい場合(入力/出力ペア2個) #3番目と4番目の数字の抽出 #改行なしでこの番号をfile3に書き込みます。 #視差を計算します #LINE_HOURSに追加 #最大3、4、5ペアであればさらに追加できます。 # - 行末に達する - #file3にLINE_HOURSを書く #LINE_HOURS*RATEを掛けて総コストを計算し、TOTAL_COSTに保存します。 ライン=$((ライン+1)) 完璧 # - ファイルの終わりに達する - #file3にTOTAL_COSTを書き込む
どのように行くかによって異なります。