파일을 처리하여 새 파일 만들기

파일을 처리하여 새 파일 만들기

쉼표로 구분된 값(군사 시간 형식의 시간 초과/시간 초과, 예: 0800, 0900, 1300)이 포함된 file1이 있습니다. 파일 1의 각 줄에는 날짜별 시간 초과/시간 초과가 포함되어 있습니다.

샘플 파일 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 파일1`"
  • 파일 3에 쓰세요
echo "$FIRSTLINE" >> 파일 3
  • file1의 첫 번째 줄을 읽고 쉼표로 구분된 두 번째 인수를 가져옵니다.
POSLVL="`head -n 1 file1 | awk -F , '{print $2}'`"

이제 변수에 위치 수준이 있으므로 file2를 검색하여 이 코드의 시간당 요율을 파악할 수 있습니다.

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개)
  #첫 번째와 두 번째 숫자 추출
  # 개행 없이 이 숫자를 file3에 씁니다(echo -n "$NR1,$NR2")
  # 시차를 계산합니다
  #LINE_HOURS에 추가

  # 쉼표 수가 2보다 큰 경우(입력/출력 쌍 2개)
  #세 번째와 네 번째 숫자 추출
  # 줄 바꿈 없이 이 숫자를 file3에 씁니다.
  # 시차를 계산합니다
  #LINE_HOURS에 추가

  # 최대 3, 4, 5쌍이면 더 추가 가능합니다..

  # -- 줄 끝에 도달 --

  # file3에 LINE_HOURS 쓰기

  # LINE_HOURS * RATE를 곱하여 총 비용을 계산하고 TOTAL_COST에 저장합니다.

  라인=$((라인+1))  

완벽한

# -- 파일 끝에 도달 --

# file3에 TOTAL_COST 쓰기

어떻게 가느냐에 따라 다릅니다.

관련 정보