gpt4 book ai didi

regex - 将 32 字节哈希值与 sed 匹配

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:31:12 25 4
gpt4 key购买 nike

我想使用 sed 从这样的字符串中提取哈希值:

[129.173.213.225:52196] some_text: another_text --> eb1d94daa7e0344597e756a1fb6e7054

期望的结果只是具有 32 字节的哈希值,在此示例中为 eb1d94daa7e0344597e756a1fb6e7054。

所以我用 regexp 尝试了以下命令(想法是删除除匹配模式之外的所有内容):

% sed 's/\([0-9a-f]{32}\)$/\1/g' < file

导致错误:

sed: -e expression #1, char 20: invalid reference \1 on `s' command's RHS

-r 传递给 sed 没有帮助,我遇到了同样的错误。

我认为正则表达式本身是正确的,因为 sed -r 's/[0-9a-f]{32}$/XXX/g' 确实将 32 字节哈希值替换为 XXX字符串。但我想删除除散列值之外的所有字符串。

% cat /etc/issue
Ubuntu 16.04.6 LTS \n \l

%
% ls -la `which sed`
-rwxr-xr-x 1 root root 73424 Feb 11 2016 /bin/sed
%

我做错了什么?

最佳答案

您可以尝试用空字符串替换该行的 --> 部分之前的所有内容:即替换匹配 .* -->.

的内容

所以命令是:

sed 's/.* -->//g' < file

即使 some_text 包含箭头符号,我们也使用 greedy正则表达式,它会尽可能匹配。

示例行的结果如下:

«~» $ sed 's/.* -->//g' < testregex 
eb1d94daa7e0344597e756a1fb6e7054

关于regex - 将 32 字节哈希值与 sed 匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58416226/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com