【问题标题】:How to replace "nodejs" for a variable into "search pattern" awk如何将变量的“nodejs”替换为“搜索模式”awk
【发布时间】:2014-03-24 13:26:47
【问题描述】:

嗨朋友们,我需要用 awk 替换 搜索模式 中的变量,我正在阅读所有类似的问题,但没有人解释如何在 “搜索模式”部分中使用变量强>。 awk 命令的基本格式是:

awk '/search_pattern/ { action_to_take_on_matches; another_action; }' file_to_parse

问题我有一个简单的搜索脚本,来自一个站点。 ¿如何将变量的“nodejs”替换为“搜索模式”?

这是我在 bash 中的脚本(工作,但我不能在 awk 中使用变量)

#!/bin/sh
searchname=nodejs


mojito=$(curl https://launchpad.net/ubuntu/+ppas?name_filter=$searchname |  awk -F/ '/>nodejs</{print $2}')
echo $mojito

【问题讨论】:

  • 抱歉,但它必须通过“如何将变量的“nodejs”替换为“搜索模式”来理解您的意图。考虑编辑您的问题以显示从curl 检索到的示例数据,然后是什么您需要作为最终输出,以及您当前获得的输出。
  • 1.如果您在使用变量时引用它们,那么您几乎总是会遇到更少的问题,即...name_filter="$searchname". 2. Assuming you mean to supply "$searchname"` 也用于 awk,而不是使用硬编码值,而是执行 awk -F/ '/'"${searchname}"'{print $2}'。祝你好运。
  • @sheller,谢谢,但不起作用,说awk: line ord. 1: regular expression ^ unfinished

标签: awk


【解决方案1】:

你可以试试这个awk

awk -v patt="$searchname" '$0 ~ patt{ print $0}'

测试:

sat:~# searchname="nodejs"
sat:~# echo -e "sample text\nthis have nodejs value" | awk -v patt="$searchname" '$0 ~ patt{ print $0}'
this have nodejs value

【讨论】:

  • 感谢工作!只有我改变了:mojito=$(curl https://launchpad.net/ubuntu/+ppas?name_filter=$searchname | awk -F/ -v patt="&gt;$searchname&lt;" '$0 ~ patt{ print $2}')
猜你喜欢
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-02-25
  • 2020-01-15
  • 2019-03-18
  • 1970-01-01
相关资源
最近更新 更多