【发布时间】:2015-08-12 08:01:17
【问题描述】:
我试图让 awk 打印第一列、第二列和之后每 4 列(例如 1、2、6、10 等)。我还想删除第二行,因为这是一个包含不重要内容的标题。最后,我想根据第一列的值(作为字符串向量提供)过滤行。
让我们以这个例子为例,假设我只想要匹配“table”或“chair”的行:
string number1 junk1 junk2 junk3 number2 junk4 junk5 junk6 number3
junk7 junk8 junk9 junk10 junk11 junk12 junk13 junk14 junk15 junk16
car 7 x1 x5 x9 3 x13 x17 x21 11
table 8 x2 x6 x10 5 x14 x18 x22 2
chair 9 x3 x7 x11 4 x15 x19 x23 6
comb 0 x4 x8 x12 1 x16 x20 x24 10
我想把它作为输出
string number1 number2 number3
table 8 5 2
chair 9 4 6
谢谢
【问题讨论】:
-
好的,那么到目前为止你尝试了什么?
-
我有一个使用 awk 的工作解决方案,它通过管道连接到非常慢的 grep,但不是只使用 awk。我在这里有另一个话题:stackoverflow.com/questions/31950514/…,但被要求提出一个新问题来构建
-
要匹配的单词列表以什么形式出现?一个文件,或者一个 shell 数组,还是什么?
-
我从 R 动态调用 awk 代码以使用 data.table 加载结果数据。因此,awk 行是动态生成的。例如,它可能是动态生成的 awk 中的数组。如果拥有 1000+ || 的可能性和可行,下面的答案可能会起作用语句连接在一起。
-
如果您正在生成代码,那么您可以在
BEGIN块中定义一个类似a["table"]; a["chair"];等的数组,然后使用测试$1 in a。但是,如果您已经在使用 R,那么我不确定您为什么要走这条路——使用 R 不是更有意义吗?
标签: awk