두 개의 서로 다른 문자열에서 공통 문자열을 추출/잘라내는 방법이 있습니까?

두 개의 서로 다른 문자열에서 공통 문자열을 추출/잘라내는 방법이 있습니까?

부분적으로 유사하고 부분적으로 다른 두 문자열에서 공통 문자열을 추출하는 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

관련 정보