找不到 bash 脚本模式

安莫雷拉

我有以下脚本:

#!/bin/bash
result=$(grep "pattern 1\|pattern 2\|pattern 3\|pattern 4\|pattern 5\|pattern 6\|pattern 7\|pattern 8" file_data.dat)

if [ -n "$result" ]; then
    printf '%s\n' "$result"
else
    printf 'No match found for pattern "%s"\n' "$pattern"
fi

它有效,但有一个问题,如果其中一个模式不匹配,我想知道哪个模式不匹配。

我也试过:

#!/bin/bash

if
        grep "pattern 1\|pattern 2\|pattern 3\|pattern 4\|pattern 5\|pattern 6\|pattern 7\|pattern 8" file_data.dat
then
echo "All patterns found"
else
echo "Missing pattern"
fi

但它有同样的问题。

αғsнιη

考虑一下:

#!/bin/bash -
patterns=('pattern1' 'pattern2' 'pattern3' 'pattern4' '...')

for pat in "${patterns[@]}"; do
    if ! grep -q -e "$pat" infile; then
        ((missed++))
        printf '%s\n' "pattern $pat not found"
    fi
done
if [[ -z "$missed" ]]; then
    printf '%s\n' 'all patterns were found'
else
    printf 'Among %d patterns, %d patterns were not found\n' "${#patterns[@]}" "$missed"
fi                       

将所有模式保存在一个数组中patterns=( ... ),然后遍历数组中的模式并使用 grep 检查该模式的匹配。如果模式匹配,则静默退出,否则报告未找到模式并将missed临时变量增加 1。

在循环之外,我们检查是否未设置该临时变量,这意味着找到并报告了所有模式,否则打印总模式中遗漏模式的计数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Bash脚本:“ [[:找不到”

来自分类Dev

bash脚本:找不到命令

来自分类Dev

bash脚本中的grep找不到项目

来自分类Dev

bash脚本错误:来源:找不到

来自分类Dev

Bash脚本说找不到命令?

来自分类Dev

在bash脚本中找不到mkdir命令

来自分类Dev

Bash在脚本中找不到正确的目录

来自分类Dev

Bash脚本-UNIX-找不到命令

来自分类Dev

Bash脚本-“错误:找不到命令”?

来自分类Dev

bash脚本错误:来源:找不到

来自分类Dev

“找不到命令”(简单的bash脚本)

来自分类Dev

在bash脚本中找不到变量

来自分类Dev

找不到Wget Bash脚本文件

来自分类Dev

在shell / bash脚本中找不到命令

来自分类Dev

Bash脚本:找不到ls命令

来自分类Dev

Bash脚本-Unix-找不到命令

来自分类Dev

Bash脚本如果被引用则找不到命令

来自分类Dev

简单的Bash脚本说找不到命令

来自分类Dev

Bash在$ PATH中找不到脚本

来自分类Dev

在bash脚本上找不到命令

来自分类Dev

脚本 bash Linux 找不到错误

来自分类Dev

期望脚本-找不到bash脚本文件

来自分类Dev

期望脚本-找不到bash脚本文件

来自分类Dev

从bash脚本内部调用时找不到命令

来自分类Dev

Bash自动化脚本-找不到命令

来自分类Dev

Bash脚本找不到Python MySQL.Connector模块

来自分类Dev

Azure Devops运行bash脚本找不到文件路径

来自分类Dev

Bash脚本在if elif语句上给出“找不到命令”错误

来自分类Dev

从bash脚本内部调用时找不到命令