2つの文字列を比較し、次の共通部分をキャプチャします。
FILE0000010985.LOG
FILE0000010999.LOG
FILE0000011000.LOG
1と2を比較すると出力になりたいの
FILE00000109
ですが、1と3を比較すると出力が2文字少なくなります。FILE000001
それは私が考える共通の接頭辞をキャプチャしますが、文字列は私には知られていないので、Bashの部分文字列一致機能などを使用するのと同じくらい簡単ではありません.
ベストアンサー1
純粋なbashソリューション。 1と2の出力はFILE0000010ではなくFILE00000109です。
#!/bin/bash
arr=(FILE0000010985.LOG
FILE0000010999.LOG
FILE0000011000.LOG
)
for (( i=0; i<${#arr[@]}; ++i )) ; do
for (( j=i + 1; j<${#arr[@]}; ++j )) ; do
x=${arr[i]}
y=${arr[j]}
p=0
while [[ ${x:0:p} == ${y:0:p} ]] ; do
(( ++p ))
done
echo $x $y : ${x:0:p-1}
done
done