【问题标题】:Collapsing a column value into lines, copying values of a second column将列值折叠成行,复制第二列的值
【发布时间】:2023-03-10 17:57:01
【问题描述】:

我有一个包含两列的文件(制表符分隔): 在第一列中,我有我想要折叠的行数,在第二列中是我想要根据第一列值粘贴到每一行(在新文件中)的行数。

文件1:

col1 col2
365 1
6   1
142 1
99  0
223 0
11  1

所以基本上在新文件中,我想要 365 行数字为 1,然后是 6 行 1、142 行 1、99 行 0、223 行 0 和 11 行 1……等等... 新文件总共应该有 846 行(这是 File1 上第一列的总和。

理想情况下,awk 命令应该可以解决我猜想的问题。对此的任何投入将不胜感激...... 谢谢

【问题讨论】:

标签: awk multiple-columns collapse


【解决方案1】:

我会按照以下方式使用 GNU AWK。避免超长输出的人为示例,让file.txt成为

col1 col2
5 1
3 0
5 1

然后

awk 'NR>1{for(i=0;i<$1;i+=1)print $2}' file.txt

输出

1
1
1
1
1
0
0
0
1
1
1
1
1

说明:我使用了for statementprint 的第二列内容 ($2) 的时间,在第一列 ($1) 中指定了第一行 (NR&gt;1) 之外的每一行。

(在 gawk 4.2.1 中测试)

【讨论】:

  • 嗨@Daweo,我在尝试以下操作时遇到错误:gawk NR&gt;1{for(i=0;i&lt;$1;i+=1)print $2} test.txt &gt; test.out -bash: syntax error near unexpected token `('
  • @guidebortoli 我编辑了我的帖子,现在试试看,如果它有用就写。
  • i+=1 = i++。您的代码在任何 awk 中的行为方式都相同,顺便说一句,其中没有特定于 gawk 的内容。
猜你喜欢
  • 2018-04-23
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 2016-03-06
  • 1970-01-01
  • 2018-01-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多