在bash中,我想基于一组单词生成每个单词的固定4个字符输出并始终匹配

问题描述 投票:-2回答:1

我收到了这些话

弗兰克·西纳特拉

Dean_Martin

Ray_Charles

我想生成4个字符,这些字符总是与这些字符匹配,永远不会改变。

没有:

frk)Frank_Sinatra

dnm)Dean_Martin

Ray)Ray_Charles

当我再次运行它时,它总是匹配这4个字符(不是随机的)

注意:

像这样的东西:

字符串32位校验和8位校验和

ABC 326 0x146 70 0x46

ACB 410 0x19A 154 0x9A

BAC 350 0x15E 94 0x5E

BCA 450 0x1C2 194 0xC2

CAB 399 0x18F 143 0x8F

CBA 256 0x100 0 0x00

http://www.flounder.com/checksum.htm

看看这个命令--->

echo -n Frank_Sinatra |的md5sum

d0f7287be11d7bbfe53809088ea3b009 -

但不是那个长串,我只想要4个独特的字符。

我是这样做的:

echo -n“Frank_Sinatra”| md5sum> foo; sed -i's /./& \ n @ / 4'foo

抓住-v“@”foo>吧

bash
1个回答
1
投票

我不会为你编写整个程序,但我可以分享一些可以实现此目的的算法。我无法保证它是最优化的算法。

问题

为文本文件中的每一行生成一个3个字母的标识符,该标识符是唯一的,这样grep只会与预期的行匹配。

假设

每行都有一个3个字母的标识符,以便grep只匹配该行。

算法

  • 对于文本文件中的每一行 获取该行的排列,使用该排列在文件上运行grep。 如果grep返回超过2行,获取该行的新排列,请返回上一步。 如果grep只返回一行,并且该行与当前行匹配,我们找到了一个正确的标识符。存储此标识符。
© www.soinside.com 2019 - 2024. All rights reserved.