部分的に類似し、部分的に異なる2つの文字列から共通文字列を抽出するBashまたはLinuxコマンドは何ですか
変数の取得方法
a="How good is it to"
外の
b="How good is it to die in defending fatherland"
c="How good is it to live in dedicating oneself to nation"
答え1
文字列のbashループ:
i=0
a=
while [[ ${b:i:1} == ${c:i:1} ]]; do a+=${b[i]}; ((++i)); done
またはより少ない仕事で:
i=0
while [[ ${b:i:1} == ${c:i:1} ]]; do ((++i)); done
a=${b:0:i}
これにより、次の文字列が生成されます。
printf -- '-->%s<--\n' "$a"
-->How good is it to <--
...対応する文字が両方のソース文字列に共通であるため、末尾のスペースがあります。
答え2
次のコードを試してください。
b="How good is it to die in defending fatherland"
c="How good is it to live in dedicating oneself to nation"
a=()
count=0
for i in ${b[@]}
do
if [ "`echo "${c[@]}" | grep $i`" ]; then
a[count]=$i
count=$((count+1))
fi
done
echo ${a[@]}
答え3
i have redirected value of variable "a" and "b" to file "file1" and "file2"
Below is command i have used to fetch the common strings
提案や修正がある場合はお知らせください。
for i in {1..13}; do awk -v i="$i" 'NR==FNR{a[$i];next}($i in a){print $i}' file1 file2 ; done|sed '/^$/d'| perl -pne "s/\n/ /g"
出力
How good is it to in