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