我有一个包含 30M 行的大输入文件,在\r\n. 我决定做一些愚蠢的事情,并通过read -r与xargs(剥离第\r一个,因为xargs似乎无法拆分多个字符)比较计算所有行的速度。这是我的两个命令:
time tr -d '\r' < input.txt | xargs -P 1 -d '\n' -I {} echo "{}" | wc -l
Run Code Online (Sandbox Code Playgroud)
time while read -r p || [ -n "$p" ]; do echo "$p"; done < input.txt | wc -l
Run Code Online (Sandbox Code Playgroud)
在这里,第二种解决方案要快得多。这是为什么?
请注意,我知道这不是计算文件行数的正确方法。这个问题只是出于我观察的兴趣。