gpt4 book ai didi

linux - Grep 多个 bash 参数

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:39:19 31 4
gpt4 key购买 nike

我正在编写一个 bash 脚本,它将在多个文件中进行搜索。

我遇到的问题是我无法将不确定数量的变量作为参数传递给 bash 脚本

我希望它执行以下操作:

给定随机数量的参数。即:

./searchline.sh A B C

对第一个做一个grep,然后用其余的egrep结果:

grep "A" * | egrep B | egrep C

我尝试做的是用 egreps 构建一个字符串:

for j in "${@:2}";
do
ADDITIONALSEARCH="$ADDITIONALSEARCH | egrep $j";
done

grep "$1" * "$ADDITIONALSEARCH"

但不知何故这行不通,似乎 bash 没有将“egrep”字符串视为 egrep。

你们有什么建议吗?

顺便说一下,我无法创建任何辅助文件,所以我猜 grep -f 不符合要求。另请注意,传递给 bash 脚本的参数数量是可变的,所以我不能执行 egrep "$2"| egrep "$3".

提前致谢。

费尔南多

最佳答案

您可以在此处使用递归来获取所需数量的管道:

#!/bin/bash

rec_egrep() {
if [ $# -eq 0 ]; then
exec cat
elif [ $# -eq 1 ]; then
exec egrep "$1"
else
local pat=$1
shift
egrep "$pat" | rec_egrep "$@"
fi
}

first_arg="$1"
shift
grep "$first_arg" * | rec_egrep "$@"

关于linux - Grep 多个 bash 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18125731/

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