【发布时间】:2015-08-12 12:54:58
【问题描述】:
cat TEXT | awk -v var=$i -v varB=$j '$1~var , $1~varB {print $1}' > PROBLEM HERE
我从一个数组传递两个变量来按范围解析一个非常大的文本文件。它确实有效。
如果我使用“>”,文件的输出将只有最后三行,由 cat 和文本编辑器验证。
如果我使用“>>”,文件的输出将包括一次完整的 TEXT 读取,然后它将第二次读取划分为我想要的范围。
如果我让输出通过 shell,我会遇到与上述相同的问题。
问题: 看来 awk 正在读取每一行并打印它。然后它返回并从 TEXT 文件中选择范围。如果我在范围模式搜索中使用常量,它不会这样做。
我不明白 awk 必须读取所有行才能找到我请求的范围。
- 为什么要打印整个文档?
- 如何让它只打印选定的范围?
这是一个大项目中的最后一个障碍,我正在用头撞桌子。
谢谢!
【问题讨论】:
-
你能提供一个数据样本和想要的输出吗?
-
在脚本上下文中,
>是覆盖文件的 SHELL 命令,>>是附加到文件的 SHELL 命令。它们都与 awk 没有任何关系。您是否可能尝试将输出写回用于输入的同一文件? wrt awk 命令 - 永远不要使用范围表达式,因为它们会使琐碎的任务变得非常简单,但是任何更有趣的事情都需要完全重写。如果您编辑问题以显示一些可测试的示例输入和预期输出,我们可以为您提供进一步的帮助。