我使用基于分隔文本文件的导入系统。使用的文件有时可能几乎 2 Gb 大,我必须检查该文件中的一些行。所以我想知道如何输出(在另一个文件上,或者只是在屏幕上)特定值的行?例如,行号 1010123、1002451、994123 等,与源文件中的完全相同吗?
问问题
39478 次
3 回答
38
要打印 line N
,请使用:
sed 'Nq;d' file
要打印多行(假设它们按升序排列),例如 994123、1002451、1010123:
sed '994123p;1002451p;1010123q;d' file
最后q
一行之后的数字告诉sed
当它到达第 1010123 行时退出,而不是通过循环遍历我们不感兴趣的剩余行来浪费时间。这就是为什么它对大文件有效的原因。
于 2013-02-05T14:11:17.707 回答
5
您可以使用许多 Unix 工具来做到这一点,例如awk
:
# print first 5 lines with awk
awk 'NR>=1&&NR<=5{print}NR>=6{exit}' file
# print selection of lines
awk 'NR==994123||NR==1002451||NR==1010123{print}NR>1010123{exit}' file
于 2013-02-05T14:11:10.963 回答
0
在蟒蛇中:
readThisFile = open('YOURFILE')
outputFile = open('OUTPUT', w)
for actualline, linetext in enumerate(readThisFile):
if actualline == WANTEDLINE
outputFile.write(linetext)
else:
pass
如果需要,您可以修改该脚本以使用参数(如 getline.py 1234)
于 2013-02-05T14:16:32.883 回答