不久前,一位深思熟虑且聪明的人通过 bash 脚本帮助了我,但我最近意识到我没有足够清楚地解释我想要什么。我在纯文本文件中有一长串短语(ngram)。如果一个词组是另一个词组的片段,那么只有较长的词组有用,所以较短的词组需要删除。下面的代码删除了较长的代码。我希望切换这将是改变几个字符的问题。
#! /bin/bash
((n=${1:-0})) || exit 1
declare -A ngrams
while read -ra line; do
for ((i = 0; i < ${#line[@]}; i++)); do
((ngrams[${line[@]:i:n}]++))
done
done
for i in "${!ngrams[@]}"; do
printf '%d\t%s\n' "${ngrams[$i]}" "$i"
done