ファイルを処理して新しいファイルを作成する

ファイルを処理して新しいファイルを作成する

カンマ区切り値(軍事時間形式のタイムアウト/タイムアウト、たとえば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を書き込む

どのように行くかによって異なります。

おすすめ記事