【发布时间】:2016-08-27 09:40:15
【问题描述】:
我正在尝试解析一个巨大的文本文件,比如 200mb。
文本文件包含一些字符串
123
1234
12345
12345
所以我的脚本看起来像
while read line ; do
echo "$line"
done <textfile
但是使用上述方法,我的字符串 " 12345" 被截断为 "12345"
我尝试过使用
sed -n "$i"p textfile
但吞吐量从每秒 27 行降低到 0.2 行,这是不可接受的 ;-)
任何想法如何解决这个问题?
【问题讨论】:
-
对不起,我在字符串行前添加了四个0x20,但编辑似乎忽略了它。
-
那么问题解决了吗?
-
你根本不应该这样做。请参阅why-is-using-a-shell-loop-to-process-text-considered-bad-practice 并认真考虑使用
awk '{print}' textfile以简洁、健壮、高效、可移植的标准UNIX 方式进行操作。我假设您计划做的不仅仅是打印每一行。 -
它对每一行的计算速度相当慢,因此从文件中快速读取不是问题,也不是脚本的重要部分。感谢您的提示,我将通读它
-
如果您使用 awk 而不是 shell 来完成,您提到的相当慢的计算可能会在眨眼之间发生。如果您有兴趣了解正确的方法,请发布后续问题。
标签: bash sed while-loop