如何将一定长度的所有字符串读入按顺序命名的shell变量中?

如何将一定长度的所有字符串读入按顺序命名的shell变量中?

我想知道是否有代码可以在文本文件中查找特定长度的每个字符串并将每个字符串保存为新变量?

例如,文本文件中有 5 个字符串。其中两个长度为 3 个字符。这个想法是解析出所有 8 个字符长的字符串,并将它们按顺序放入变量中,例如var1, var2, var3

我该怎么做这个?

谢谢!

(对于那些想知道的人,我在我的电脑上发现了一个旧文件,其中有一堆带有私钥的比特币钱包,试图将它们全部保存为变量以检查其余额。)
查看有关比特币地址的更多信息,并查看它们包含哪些字符包括,访问比特币地址网站这里

答案1

以下是使用 中所有唯一 8 个字母单词的按字母顺序排列的列表的示例man bash

bash   # clean temporary environment 
. <(man bash | tr -sc '[[:alpha:]]' '\n' |
    egrep  '^[a-z]{8}$' | sort -u | 
    nl -s '=' | sed 's/^ */var/')
echo $var20 $var80 $var200

输出:

asterisk document precedes

要清理,请执行以下操作:

exit   # forget all those vars

笔记:

  • 或多或少绝对确定输入数据惰性的,并且不包含任何 shell 可能意外解释为命令的危险内容。如果是这样,则无法安全地使用 完成分配=,并且必须使用更明智的东西,例如printf -v var1 foobar.

  • 这个man bash例子比这个问题所要求的更复杂。最主要的是nl添加 number 和=,并sed在流中添加前缀var,然后.运行它,从而将字符串分配给变量。

相关内容