在数组中查找模式

时间:2014-08-15 15:58:40

标签: bash

我有一系列元素,我想找到所有具有以下形式的元素:

$i or ${i}

哪里可以是任何自然数? 这可以在不使用AWK的情况下实现吗?

2 个答案:

答案 0 :(得分:2)

如果您愿意,可以使用grep执行此操作。例如:

a=('$1' '$3' '$(4)' '5' 'a' '$a' '$1' '${52}')
for i in ${a[*]}; do
    if [ $(echo "$i" | grep -E "^[$][0-9]+$") ]; then     # First possible pattern
        echo "$i"
    elif [ $(echo "$i" | grep -E "^[$]{[0-9]+}$") ]; then # Second possible pattern
        echo "$i"
    fi
done

输出:

$1
$3
$1
${52}

答案 1 :(得分:2)

#!/bin/bash
ARRAY=('a' '1' '$1' '${1}')
FOUND=()
for __ in "${ARRAY[@]}"; do
    [[ $__ =~ ^[$]([0-9]+|[{][0-9]+[}])$ ]] && FOUND+=("$__")
done
echo "Found: ${FOUND[*]}"

输出:

Found: $1 ${1}