处理文件以创建新文件

处理文件以创建新文件

我有一个 file1,其中包含逗号分隔值(军事时间格式的超时/超时,例如 0800、0900、1300)。文件 1 的每一行都包含每天的 timein/timeout。

样本文件1:

Name, Position Level 3
0800, 1800
0900, 1200, 1230, 2000
0901, 2100

文件 2 包含(每小时费率):

Position Level 1, 100
Position Level 2, 200
Position Level 3, 300
Position Level 4, 400
Position Level 5, 500

我需要创建一个文件 3,其中包含几行,其中每行显示第一次进入和最后一次超时以及每天渲染的小时数。最后一行将显示月薪,该月薪将计算当月渲染的小时数(每天的小时数总和)* 小时费率。

文件3:

Name, Position Level 3
0800, 1800, 10
0900, 2000, 10.5
0901, 2100, 10.983
9444.9

答案1

请注意,您提供的文件不是用逗号分隔的;它们以逗号空格分隔。您需要去掉逗号后的这些空格,否则下面的方法可能无法正常工作。

以下是伪代码,可以帮助您入门。

注意使用正确的字符。

我的方法是:

  • 读取并存储file1的第一行
FIRSTLINE="`head -n 1 file1`"
  • 将其写入文件3
回声“$FIRSTLINE”>>文件3
  • 读取 file1 的第一行并获取以逗号作为分隔符的第二个参数
POSLVL="`head -n 1 file1 | awk -F , '{print $2}'`"

现在,您在变量中拥有了位置级别,这使您可以通过在 file2 中查找来计算出此代码的每小时费率:

RATE=`grep "$POSLVL" file2 | RATE=`grep "$POSLVL" file2 | awk -F , '{print $2}'`

然后我们可以使用如下内容继续读取 file1 的每一行:

MAXLINES=`wc -l 文件 1 | awk '{print $1}'`
线=2

同时测试 $LINE -le $MAXLINES
  READLINE="`头 -n $LINE | 尾 -n 1`"

  LINE_HOURS=0  
  总成本=0

  # 计算逗号的数量以确定输入/输出对的数量
  逗号=`回显$READLINE | grep -o , |厕所-l | awk '{print $1}'`

  # 如果逗号计数 = 1(1 个输入/输出对)
  # 提取第一个和第二个数字
  # 将这些数字写入 file3,不带换行符 (echo -n "$NR1,$NR2")
  # 计算出小时差
  # 添加到 LINE_HOURS

  # 如果逗号计数 > 2(2 个输入/输出对)
  # 提取第三个和第四个数字
  # 将这些数字写入 file3,不带换行符
  # 计算出小时差
  # 添加到 LINE_HOURS

  # 如果最多 3、4 或 5 对,则可以添加更多..

  # -- 到达行尾 --

  # 将 LINE_HOURS 写入 file3

  # 通过乘以 LINE_HOURS * RATE 计算总费用并存储在 TOTAL_COST 中

  线=$((线+1))  

完毕

# -- 到达文件末尾 --

# 将 TOTAL_COST 写入 file3

看你怎么走。

相关内容