Linux 在大型txt文件中搜索并查找位置
我想在linux区的一个大txt文件(187GB)中找到一个位置 txt文件中的每个条目都受到$$$的限制,我想在文件中找到3396条目。所以我需要数一数$$$,然后当它达到3396 我该怎么解决 格里茨Linux 在大型txt文件中搜索并查找位置,linux,ubuntu,sed,find,grep,Linux,Ubuntu,Sed,Find,Grep,我想在linux区的一个大txt文件(187GB)中找到一个位置 txt文件中的每个条目都受到$$$的限制,我想在文件中找到3396条目。所以我需要数一数$$$,然后当它达到3396 我该怎么解决 格里茨 好的,我举个例子 TEXT TEXT TEXT TEXT <TAG>TEXT> <TAG> TEXT TEXT </TEXT> $$$$ 给我行号直到3396计$$$。最后一个是我感兴趣的领域我认为最好使用python(或其他语言) 看看 美元
好的,我举个例子
TEXT
TEXT
TEXT
TEXT
<TAG>TEXT>
<TAG>
TEXT
TEXT
</TEXT>
$$$$
给我行号直到3396计$$$。最后一个是我感兴趣的领域我认为最好使用python(或其他语言) 看看
美元符号之间的文字长度是否固定?如果是,您可以使用seek()快速跳转正确的部分。我认为最好使用python(或其他语言) 看看
美元符号之间的文字长度是否固定?如果是,您可以使用seek()快速跳转正确的部分。如果没有任何样本数据,很难正确回答,但您可以尝试以下
awk one liner
以查看它是否有效
awk '{for(i=1;i<=NF;i++) {if ($i=="$$$$") count++; if ($i=="$$$$" && count==3396) print $(i+1);}}' INPUT_FILE
awk'{for(i=1;i在没有任何样本数据的情况下,很难正确回答它,但您可以尝试以下awk one liner
以查看它是否有效
awk '{for(i=1;i<=NF;i++) {if ($i=="$$$$") count++; if ($i=="$$$$" && count==3396) print $(i+1);}}' INPUT_FILE
awk'{for(i=1;i正如前面的海报提到的使用更好的语言来支持笨拙的古老awk一样,这里有一个Perl变体,它也很短。要跳过3395项,并打印第3396项使用
perl -e '$/=q/$$$$/;<>while$.<3395;print$_=<>' <foo.txt
perl-e'$/=q/$$/;而$.正如前面的海报提到的使用更好的语言来支持笨拙的古老awk,这里有一个perl变体,它也很短。要跳过3395项,打印第3396项使用
perl -e '$/=q/$$$$/;<>while$.<3395;print$_=<>' <foo.txt
perl-e'$/=q/$$/;而$.这可能适合您(它是sed的,但对于这样一个大的文件来说会很慢!):
这可能适合您(它是sed,但对于如此大的文件来说速度会慢很多!):
更简单的awk
命令:
awk '/\$\$\$\$/ { if (++count == 3396) { print; exit } }'
如果要对多个文件执行此操作,可以将exit
更改为newfile
假设您要打印包含$$$$
的第3396行;否则,找到它时要做什么?一个稍微简单的awk
命令:
awk '/\$\$\$\$/ { if (++count == 3396) { print; exit } }'
如果要对多个文件执行此操作,可以将exit
更改为newfile
假设您要打印包含$$$$
的第3396行;否则,当您找到它时,您想做什么?文件的格式是什么?文件中是否有换行符?您感兴趣的条目是否跨越多行?分隔符是否可以出现在任何位置或仅出现在行的开头?f值是多少文件的格式如?文件中是否有换行符?您感兴趣的条目是否跨越多行?分隔符是否可以出现在任何位置或仅出现在行的开头?