我看了这个问题:BASH 回文检查器 https://stackoverflow.com/questions/26601234/bash-palindrome-checker。这就是该线程中问题答案所显示的内容:
grep -E '^[a-z]{3,45}$' /usr/share/dict/words | while read -r word;
do [ $word == `echo $word | rev` ] && echo $word;
done;
我知道这是从“单词”读取,但尝试将其修改为从文本文件读取而不是读取时遇到困难/usr/share/dict/words
。我想让它读取我请求的任何文本文件,所以我可以输入:
source palindrome *filename*
这将打印出控制台中文件中找到的回文。稍后也可以得到它,以便我可以输出到输出文件:
source palindrome *filename* >> output.txt
我尝试这样做,但它不起作用,我真的不确定我必须更改什么才能让它读取我的文件:
#!usr/bin/bash
function search
{
filename=$1
grep -E '^[a-z]{3,45}$' "$filename" | while read -r word;
do [ $word == `echo $word | rev` ] && echo $word;
done;
}
search $1
如果给出任何解决方案,它们可以采用类似的格式吗?我还没有学到太多其他技术。如果给出更复杂的解决方案,请您解释一下给出的代码。
输入文件来自电子书,它非常长,所以一个小片段是:(我确实意识到这并没有显示片段中的回文,但它只是为了显示它是什么类型的文本文件)
O and that lotion mustn't forget.
Fever near her mouth. Your head it simply. Hair braided over: shell with
seaweed. Why do they hide their ears with seaweed hair?
运行源回文时filename没有错误消息。我按 Enter 键,终端让我再次输入我想要输入的任何内容。看起来好像没有通过脚本运行