组合awk命令

组合awk命令,awk,Awk,我现在有一段代码: read -p 'Enter the fruit you want to search: ' user_fruit awk -F ":" -v re="$user_fruit" '$4 ~ re' $fruit_file 它使用awk在$4中查找与用户在$user\u fruit文件中的$user\u fruit变量下提供的模式匹配的匹配项。但是,我需要修改awk命令,使其仅在单词apple也在线时显示行匹配 任何帮助都将不胜感激 可

我现在有一段代码:

read -p 'Enter the fruit you want to search: ' user_fruit
awk -F ":" -v re="$user_fruit" '$4 ~ re' $fruit_file
它使用awk在
$4
中查找与用户在
$user\u fruit
文件中的
$user\u fruit
变量下提供的模式匹配的匹配项。但是,我需要修改awk命令,使其仅在单词
apple
也在线时显示行匹配


任何帮助都将不胜感激

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

read -p 'Enter the fruit you want to search: ' user_fruit
awk -F ":" -v re="$user_fruit" '/apple/ && $4 ~ re' "$fruit_file"

即,当记录匹配
/apple/
且第四个字段匹配正则表达式时,打印记录。

如果要检查是否存在文本固定字符串,可以使用ise
索引来代替正则表达式搜索:

read-p'输入要搜索的水果:'user\u fruit'
awk-F:“-v re=“$user_fruit””索引($0,“apple”)&索引($4,re)”文件
这里,

  • index($0,“apple”)
    -检查整行上是否有
    apple
    子字符串(如果其索引不是
    0
  • &&
    -
    条件
  • 索引($4,re)
    -检查字段4中是否有
    apple
    子字符串(如果其索引不
    0
见:

s='1:2:3:2-李子+梨
苹果:二:三:一李子+梨'
用户_水果=‘李子+梨’

awk-F:“-v re=“$user_fruit””index($0,“apple”)&&index($4,re)@Sundeep感谢您的宝贵输入,并对忘记的链接表示抱歉:)