【问题标题】:how to search using variables in awk如何在awk中使用变量进行搜索
【发布时间】:2015-01-03 09:44:16
【问题描述】:

我有这个文件 test1 如下

NAME1 04-03-2014 
NAME2 04-04-2014 

现在,当我从命令行执行时,我能够获得所需的 o/p,但当我将其用作变量时却无法获得。我的 awk 版本是 3.1.5

从 cmd 行工作:awk '$2 = /04-03-2014/' test1 在 bash/ksh 脚本中不起作用:

export m=04 d=03 y=2014
awk -v m="$m" -v d="$d" -v y="$y" '$2 = /m-d-y/' test1 OR
awk -v m="$m" -v d="$d" -v y="$y" '$2 = m-d-y' test1  ### This replaces the 2nd field as -2010

我之前在 printf 语句中使用过 awk 中的变量来计算数字,但上面的示例似乎对我不起作用。但是,我尝试了一种解决方法,即在文件中回显 awk cmd,然后将文件作为脚本执行,这给了我所需的 o/p 但是我认为这不是正确的做事方式,如果有人可以,我将不胜感激给我一个更聪明的方法。

【问题讨论】:

  • 你想做什么?发布一个无法执行您想要的任何操作的脚本,然后询问我们如何解决它而不告诉我们您想要什么,这让我们很难为您提供帮助。您是在尝试为 $2 分配某个值还是尝试测试 $2 是否等于某个值或其他值?您发布了一些示例输入。这是一个好的开始,但现在根据该输入发布您想要的输出。

标签: awk


【解决方案1】:

这是一个猜测,但我敢打赌,您正在尝试打印$2 等于从您的变量构造的特定字符串的每一行。如果是这样,那就是:

awk -v m="$m" -v d="$d" -v y="$y" '$2 == m"-"d"-"y' file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-04-04
    • 2019-01-17
    • 2019-03-18
    • 2019-01-17
    • 2016-07-28
    • 2017-11-12
    • 1970-01-01
    相关资源
    最近更新 更多