Bash
Snippets
重複排除してソート
-u で重複排除する。
#!/bin/bash
fruits=(
"banana"
"apple"
"banana"
"lemon"
"apple"
)
fruits=($(for v in "${fruits[@]}"; do echo "$v"; done | sort -u ))
for fruit in "${fruits[@]}"; do
echo $fruit
done
apple
banana
lemon
キーを指定して数値降順にソート
-k 2 -t @ で
@ をデリミタとして 2 列目をキーとする。
-n -r で数値降順にソートする。
#!/bin/bash
members=(
"Taro=engineer@35"
"Jiro=dentist@30"
"Saburo=lawyer@25"
"Shiro=chef@40"
)
members=($(
for v in "${members[@]}"; do
echo "$v"
done | sort -k 2 -t @ -n -r
))
for member in "${members[@]:0:3}"; do
name=${member%=*}
occupation=${member#*=}
occupation=${occupation%@*}
age=${member#*@}
echo $name $occupation $age
done
Shiro chef 40
Taro engineer 35
Jiro dentist 30
正規表現マッチ
[[ ... =~ ... ]] で正規表現マッチを判定できる。
#!/bin/bash
command="bash -c 'source ~/.claude/scripts/ask.sh' 1"
pattern="^bash -c 'source ~/\.claude/scripts/ask\.sh'"
if [[ "$command" =~ $pattern ]]; then
echo "OK"
else
echo "NG"
fi
OK