我有一个巨大的 .xml 文件,重 500Mb,我想从我可以 grep 的已知位置开始从中提取一些文本。
当我只执行 grep 时,它会显示关键字出现的位置,但不会显示行号。如果我需要从第一个 grep 中提取 200 行怎么办?
答案1
grep -A200 searchword file.xml
可用于在每场比赛后列出 200 行。searchword
是您要搜索的单词,也是file.xml
XML 文件名。
您还可以-B200
在每场比赛之前列出 200 行,并-C200
在之前列出 200 行,之后列出 200 行。
请注意,正确的 XML 解析器几乎总是比使用 grep 或 regexp 更好的选择:
答案2
您可以使用 提取行范围awk
。以下命令将从 FILENAME 中提取 2-6 行(含)并将其写入 OUTPUT。
cat FILENAME | awk 'NR >= 2 && NR <= 6' > OUTPUT
您还可以使其从已知位置提取到文件末尾,如下所示
cat FILENAME | awk 'NR >= 2' > OUTPUT
NR
代表“号码记录”
您还可以使用 grep 动态获取行号并将其传递给awk
命令以提取这些行
LINE_START=`grep -nr "STRING" FILENAME | grep -o '^[0-9]\+'`
cat FILENAME | awk 'NR >= $LINE_START' > OUTPUT
答案3
事实上,我可以使用 Notepad++ 轻松打开它,然后只需按 ctrl+F 进行搜索。