我有一个包含许多数字的文件,每个数字占一行。我的目标是找到丢失的数字。我正在尝试生成所有数字的序列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"
看看它包含什么。