2つの異なる文字列から共通の文字列を抽出/切り取る方法はありますか?

2つの異なる文字列から共通の文字列を抽出/切り取る方法はありますか?

部分的に類似し、部分的に異なる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

関連情報