如何拆分单词的字母,每个字母在单独的一行中?
例如,鉴于"StackOver"
我想看到
S
t
a
c
k
O
v
e
r
Run Code Online (Sandbox Code Playgroud)
我是 bash 新手,所以我不知道从哪里开始。
/usr/share/dict/words包含很多单词。这个列表是如何生成的?它的内容在不同的 Unices 中是否相同?是否有任何标准规定它必须包含什么?
到目前为止,我所能找到的是,在 Ubuntu/Debian 上,列表来自wordlist包,但它们的描述没有提供关于列表是如何实际生成的线索。
编辑:我把这个搞得太复杂了。这与反向 grep 无关。我仅使用 得到相同的结果grep -x -f stop.txt < in.txt。如果在停用词文件中who位于前面whose,则结果只是who. 当停用词文件中的顺序相反时,in.txt会找到 中的两行。我感觉我根本就不懂grep。
我无法让反向 grep 像我期望的那样工作,以便从文件中删除包含停用词的行。停用词的给出顺序会影响结果。
假设我有两个文件。输入文件in.txt:
who
whose
Run Code Online (Sandbox Code Playgroud)
以及一个包含停用词列表的文件stop.txt:
who
whose
Run Code Online (Sandbox Code Playgroud)
如果我in.txt使用反向 grep 搜索对 中的停用词进行“过滤” stop.txt,我会得到:
$ grep -vx -f stop.txt < in.txt
whose
$
Run Code Online (Sandbox Code Playgroud)
仅当我更改stop.txt为
whose
who
Run Code Online (Sandbox Code Playgroud)
我得到:
$ grep -vx -f stop.txt < in.txt
$
Run Code Online (Sandbox Code Playgroud)
我不明白为什么带有停用词的文件中的单词顺序很重要。
我好像从本站的评论中记得算术展开的内容可能是分词的,但是又找不到评论了。
考虑以下代码:
printf '%d\n' "$(($(sed -n '/my regex/{=;q;}' myfile)-1))"
Run Code Online (Sandbox Code Playgroud)
如果sed命令输出一个多位数字并且$IFS包含数字,那么在算术发生之前,命令替换是否会进行单词拆分?
(我已经使用额外的双引号进行了测试:
printf '%d\n' "$(("$(sed -n '/my regex/{=;q;}' myfile)"-1))"
Run Code Online (Sandbox Code Playgroud)
这不起作用。)
顺便说一句,上面的示例代码是我刚刚在 Stack Overflow 上发布的这个函数的简化形式的更改。
我正在编写一个使用 /usr/share/dict/words 文件生成会话密钥的应用程序。
我震惊地发现文件中最令人震惊的种族诽谤——“N字”(不同的拼写)。
谁负责维护这个文件,为什么文件里会有这些文字?
words ×5
arithmetic ×1
bash ×1
command-line ×1
dictionary ×1
files ×1
filesystems ×1
grep ×1
split ×1