입력 파일을 가져와 24시간 형식으로 입력을 표시하도록 합니다.

입력 파일을 가져와 24시간 형식으로 입력을 표시하도록 합니다.

파일 1이 있다고 가정해 보겠습니다. 1 5 17 10 8 16 이 파일을 입력하고 24시간 형식으로 표시할 수 있는 방법이 있습니까?

이전 출력:100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

답변1

Jesse_b몇 가지 답변을 주었습니다댓글에서, 그러나 귀하의 요구 사항과 정확히 일치하지 않을 수 있습니다.

원하는 것을 정확하게 설명하면 정말 간단합니다.

while read -a nums
do
    for num in "${nums[@]}"
    do
        printf '%d00 hours ' "$num"
    done
done < file1

read -a nums값의 배열(즉, 여러 값)을 읽습니다.  배열에 저장된 값의 모음을 "${nums[@]}"참조하며 , 각 항목을 에 할당하여 반복합니다 . 그런 다음 각 항목을 인쇄하고 공백을 추가합니다.numsfor num in …num00 hours

질문에 표시한 대로 모든 내용이 한 줄에 인쇄됩니다. 줄을 종료하려면 echo위 코드 끝에 또는 를 추가하세요. printf '\n'각각을 별도의 줄에 인쇄하려면 명령 printf(가운데)을 다음으로 변경하세요.

        printf '%d00 hours\n' "$num"

답변2

1 5 17 10 8 16
1 5 17 10 8 16

$ awk -F" " '{ for(i=1;i<=NF;i++) { $i=$i*100" hours"} print }' file

100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours
100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

답변3

사용 bash:

$ printf '%d00 hours ' $(<file)
100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

(출력 끝에 개행 문자가 없습니다)

고급 형식:

$ printf '%02d:00 hours\n' $(<file)
01:00 hours
05:00 hours
17:00 hours
10:00 hours
08:00 hours
16:00 hours

답변4

@Kusalananda 님의 말씀에 전적으로 동의합니다. 이것은 조용하고 장황하지만 매우 간단한 방법입니다.

awk '{print $1*100 " hours",$2*100" hours",$3*100" Hours",$4*100" hours",$5*100" hours" }' < file.txt

100 hours 500 hours 1700 Hours 1000 hours 800 hours

관련 정보