次の2つの「リスト」があるとしましょう。
#!/usr/bin/env bash
git fetch origin;
first_list=( );
second_list=( );
git branch --merged "remotes/origin/dev" | tr -d ' *' | while read branch; do
first_list+=( "$branch" );
done
git branch --merged HEAD | tr -d ' *' | while read branch; do
second_list+=( "$branch" );
done
最初のリストと2番目のリストの要素が交差する要素を保持する3番目のリストを作成する必要があります。どうすればいいですか?
ベストアンサー1
連想配列をヘルパーとして使用して、あるリストの要素(キー)を追跡し、別のリストの要素をすばやく確認します。
#!/bin/bash
list1=( 1 3 5 6 7 8 bumble bee )
list2=( 2 4 4 4 6 7 8 bee beer )
declare -A seen
for item in "${list1[@]}"; do
seen[$item]=1
done
for item in "${list2[@]}"; do
if [ -n "${seen[$item]}" ]; then
intersection+=( "$item" )
fi
done
echo 'Intersection:'
printf '\t%s\n' "${intersection[@]}"
これは、正確な文字列マッチングを使用して2つのリスト間の要素を比較します。
結果:
Intersection:
6
7
8
bee