我使用基于分隔文本文件的导入系统。使用的文件有时几乎是2 Gb大,我必须检查该文件中的一些行。 所以我想知道如何输出(在另一个文件上,或仅在屏幕上)特定值的行?例如。行号1010123,1002451,994123等,与源文件中的完全相同?
答案 0 :(得分:36)
要打印行N
,请使用:
sed 'Nq;d' file
打印多行(假设它们按升序排列),例如994123,1002451,1010123:
sed '994123p;1002451p;1010123q;d' file
最后一个行号后的q
告诉sed
在到达第1010123行时退出,而不是通过循环我们不感兴趣的剩余行来浪费时间。这就是为什么它对大文件有效。
答案 1 :(得分: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
答案 2 :(得分:0)
在python中:
readThisFile = open('YOURFILE')
outputFile = open('OUTPUT', w)
for actualline, linetext in enumerate(readThisFile):
if actualline == WANTEDLINE
outputFile.write(linetext)
else:
pass
如果需要,您可以修改该脚本以使用参数(例如getline.py 1234)