파일 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[@]}"
참조하며 , 각 항목을 에 할당하여 반복합니다 . 그런 다음 각 항목을 인쇄하고 공백을 추가합니다.nums
for num in …
num
00 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