gpt4 book ai didi

linux - 使用 grep 搜索多个模式的功能

转载 作者:太空宇宙 更新时间:2023-11-04 05:42:56 25 4
gpt4 key购买 nike

我想制作一个 bash 脚本来使用 grep 搜索具有多种模式(不区分大小写)的行。我想创建一个 bash 脚本,可以按如下方式使用:

myscript file.txt pattern1 pattern2 pattern3

它应该被翻译为:

grep -i --color=always pattern1 file.txt | grep -i pattern2 | grep -i pattern3

我尝试了以下 bash 脚本,但它不起作用:

#!/bin/bash
grep -i --color=always $2 $1 | grep -i $3 | grep -i $4 | grep -i $5 | grep -i $6 | grep -i $7

错误是:

Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.
Usage: grep [OPTION]... PATTERN [FILE]...
Try 'grep --help' for more information.

最佳答案

我认为你可以做一个递归函数:

search() {
if [ $# -gt 0 ]; then
local pat=$1
shift
grep "$pat" | search "$@"
else
cat
fi
}

在您的脚本中,您将调用此函数并将搜索模式作为参数传递。假设 $1 是文件,其余参数是模式,那么您会这样做

file=$1
shift
cat "$file" | search "$@"

关于linux - 使用 grep 搜索多个模式的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42514356/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com