我有一系列元素,我想找到所有具有以下形式的元素:
$i or ${i}
哪里可以是任何自然数? 这可以在不使用AWK的情况下实现吗?
答案 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}