我正在尝试使用bash脚本来计算两个单词之间的差异,并删除它们之间少于2个不同字符的单词。
示例输入文件:
hello
heggo
helloso
good
god
face
fake
rage
输出结果为:
hello
heggo
helloso
rage
输入文件已经格式化为按字母顺序排列,小写字母,每行只有一个单词。
丢弃的单词是:
好 - 只有一个与上帝不同的字母,只有一个额外的“O”
上帝 - 同样好的
面部 - 只有C与其他单词不同。
假 - 只有K与其他单词不同。
¿有任何想法来解决这个问题吗?
答案 0 :(得分:0)
这应该根据您的描述和评论工作。 因为有两个oo,所以也会保留“好”这个词。 通常,任何位置都会有两个相同字母的单词。
datasource=$(cat b.txt)
newdata=""
while IFS='' read -r line; do
found=0
readarray word < <(echo "$line" |fold -w1) #splits each line in a char array
for eachletter in ${word[@]}; do
found=$(echo "$line" | grep -o $eachletter |wc -w)
if [[ $found -ge 2 ]] && [[ ${newdata[@]} != *"$line"* ]]; then
newdata+=( "$line" )
fi
done
unset word eachletter found
done <<< "$datasource"
echo -e "New Data \n"
printf '%s\n' ${newdata[@]} # >newfile.txt