首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >结合awk命令

结合awk命令
EN

Stack Overflow用户
提问于 2021-05-06 08:15:45
回答 2查看 57关注 0票数 1

我现在有一段代码:

代码语言:javascript
复制
read -p 'Enter the fruit you want to search: ' user_fruit
awk -F ":" -v re="$user_fruit" '$4 ~ re' $fruit_file

它使用awk在$4中查找与用户在$fruit_file中的$user_fruit变量下提供的模式匹配的匹配。但是,我需要修改awk命令,以便它只在单词apple也在行上时显示行匹配。

任何帮助都将不胜感激!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2021-05-06 08:21:43

您可以使用布尔运算符扩展awk模式:

代码语言:javascript
复制
read -p 'Enter the fruit you want to search: ' user_fruit
awk -F ":" -v re="$user_fruit" '/apple/ && $4 ~ re' "$fruit_file"

即,当记录与/apple/匹配时打印记录,第四个字段与regex匹配。

票数 1
EN

Stack Overflow用户

发布于 2021-05-06 09:05:43

如果您想检查是否存在文字的、固定的字符串,您可以使用index代替regex搜索:

代码语言:javascript
复制
read -p 'Enter the fruit you want to search: ' user_fruit
awk -F ":" -v re="$user_fruit" 'index($0, "apple") && index($4, re)' file

这里,

  • index($0, "apple") -检查整行中是否存在apple子字符串(如果其索引不是0)
  • && - AND条件
  • index($4, re) -检查字段4中是否存在apple子字符串(如果其索引不是0)。

在线演示

代码语言:javascript
复制
s='one:two:three:2-plum+pear
apple:two:three:1-plum+pear'
user_fruit='plum+pear'
awk -F ":" -v re="$user_fruit" 'index($0, "apple") && index($4, re)' <<< "$s"
#index($3, "snow") != 0
# => apple:two:three:1-plum+pear
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67414310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档