한 줄에 각 숫자가 많은 숫자가 포함된 파일이 있습니다. 내 목표는 누락된 숫자를 찾는 것입니다. 모든 숫자의 시퀀스를 생성하려고 합니다.seq
start=$(head -1 numbers.txt)
finish=$(tail -1 numbers.txt)
seq $start $finish > all_numbers.txt
다음과 같은 오류 메시지가 나타납니다.
seq: invalid floating point argument: 4106
Try 'seq --help' for more information.
4106은 분명히 부동 소수점 숫자가 아니기 때문에 혼란스럽습니다.
그 후에는 diff를 사용하여 누락된 숫자를 찾을 계획입니다. seq가 왜 이렇게 동작하는지 말해 줄 수 있는 사람이 있나요?
답변1
4106 뒤에 숨겨진 문자가 있을 수 있습니다. 파일이 Microsoft 세계의 경우 캐리지 리턴일 가능성이 높으며 먼저 제거해야 합니다(또는 로 전체를 완료해야 합니다 awk
).
$ seq 1 $'2\r'
seq: invalid floating point argument: 2
Try `seq --help' for more information.
$ echo seq 1 $'2\r'
seq 1 2
거기에 있지만 볼 수는 없습니다. 터미널에 출력할 때 (보통) 커서를 줄의 시작 부분으로 이동합니다.
ksh93, zsh 또는 bash를 사용하여 다음을 시도하십시오.
printf '<%q>\n' "$start"
무엇이 포함되어 있는지 확인하세요.