2

我有以下代码从文件中读取行并输出计数:

while read -u 3 -r line; do
    echo $i
    i=$(( i + 1))
done 3<"$IN_FILE"

(我想在循环内做更多,但这说明了问题)。

这个循环对我来说永远不会结束。我的IN_FILE包含 2880 万行(用 确认wc -l),但在我手动杀死它之前,它会继续运行并且输出计数高达 ~35M。如果我使用 head/tail 创建这个文件的一个小样本,它运行得很好并按预期终止。

有谁知道可能导致这种情况的原因?我的文件可能包含一些特殊字符会导致重定向进入循环吗?

如果相关,我正在 Mac OS X 终端中运行这个 bash 脚本......

谢谢。

4

1 回答 1

1

也许尝试使用split -l 1000000 $IN_FILE将其分解为 29 个文件,看看其中是否有任何奇怪的行为?

于 2013-04-05T14:30:55.107 回答