【问题标题】:How to iterate through a file and append data?如何遍历文件并追加数据?
【发布时间】:2016-07-14 20:14:04
【问题描述】:

在我的 awk 代码中,我一直试图找到一种方法来遍历文件 (data1.txt) 并附加文件行 并计算文件行,如果 substr($0,29,2) of file == "04"

data1.txt

6597243042 20160305001100003140152852153019000127000200
6597243042 20160305001100003140170306190306020000000200
6597243042 20160305001100003140170552190552020000000200
6597243042 20160305001100003140201430201543000113000400
6592311319 20160305041100003460072719072839000120001200
6592311319 20160305041100003460072927072952000025001200

在这种情况下只有 2 行满足条件 (substr($0,29,2)=="04")

    Filename="def"
    file="data1.txt"
    #awk '{count1=0}'
    while IFS= read line
    do

       awk '{ if (substr($0,29,2)=="04") {print substr($0,29,4)}}' 

    done <"$file"

【问题讨论】:

  • 你会在 unix.stackexchange.com 上获得更好的运气和响应
  • 我听不懂你的文字。我会尝试将其编辑为更好的英语,但我根本无法理解您要说的内容。
  • 您对 awk 有一个基本的误解 - 您不需要编写外部或内部循环来遍历文件,这就是 awk 所做的。您只需要编写您希望在每一行上执行的&lt;condition&gt; { &lt;action&gt; }。根据您发布的输入,编辑您的问题以至少提供预期的输出,因为现在我们无法判断您正在尝试做什么。

标签: unix awk


【解决方案1】:

做看起来像你想做的事情就是:

awk '{print $0, (substr($0,29,2)=="04") ? substr($0,29,4) : "")}' "$file"

但您的输入文件没有任何第 29/30 个字符为 04 的情况,所以 idk...

【讨论】:

  • 我认为你在正确的轨道上,虽然我怀疑 OP 也想计算匹配行。
猜你喜欢
  • 2020-05-14
  • 2015-10-03
  • 2015-05-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-12-08
  • 1970-01-01
  • 2015-07-13
相关资源
最近更新 更多