拼写每一行

时间:2011-04-09 20:50:43

标签: bash scripting aspell

我想编写一个bash过滤器,它将获取换行符分隔的句子并返回没有拼写错误的句子。我一直在考虑aspell,但我不知道该怎么做。有什么想法吗?

3 个答案:

答案 0 :(得分:2)

此管道应该提供您想要的结果。请注意,您应该将内容输入到此处,因此请在cat input.txt |进行快速测试。

while read line; do [ "$(ispell -l <<< "$line" | wc -l)" -gt 0 ] && echo "$line"; done

还要添加行号:

nl -b a -p | while read number line; do [ "$(ispell -l <<< "$line" | wc -l)" -gt 0 ] && echo "$number: $line"; done

如果您想要返回拼写错误的行,只需将-gt替换为-le(当然可以将&&替换为||


当然,您可以将这些行保存为脚本,然后只需执行

script.sh < input.txt

如果您愿意

答案 1 :(得分:2)

这是一个可以满足您需求的脚本。

#!/bin/bash

# Regex for lines describing "good words":
# - empty lines (after each line of input, i.e. at the end)
# - lines with only a '*' (indicating a good word)
# - a line with '@(#) '   (at the start of the output)
# All other lines indicate a bad word.
good_words='^[*]?$|^@\(#\) '

while read # read one line of input
do
    echo $REPLY | # pipe the line to aspell
    aspell pipe | # let aspell check the line
    egrep -q -v $good_words || # have a look if aspell found misspellings
    # no words with mistake, output the line
    echo $REPLY
done

答案 2 :(得分:0)

grep -v "$(aspell list < file)" file