쉼표로 구분된 값(군사 시간 형식의 시간 초과/시간 초과, 예: 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 쓰기
어떻게 가느냐에 따라 다릅니다.