我有一个file1.txt包含以下内容:
time="2016-04-25T17:43:11Z" level=info msg="SHA1 Fingerprint=9F:AD:D4:FD:22:24:20:A2:1E:0C:7F:D0:19:C5:80:42:66:56:AC:6F"
我希望文件如下所示:
9F:AD:D4:FD:22:24:20:A2:1E:0C:7F:D0:19:C5:80:42:66:56:AC:6F
我使用下面的sed来删除bash中从文件开头到所选单词(“fingerprint”)的文本。
sed 's/^.*Fingerprint=://'
它似乎不起作用,所以请建议使用正确的命令。
它可以是sed,也可以不是sed

最佳答案

使用“向后看”匹配下一个双引号:

$ grep -Po '(?<=Fingerprint=)[^"]*' file
9F:AD:D4:FD:22:24:20:A2:1E:0C:7F:D0:19:C5:80:42:66:56:AC:6F

顺便说一下,您的sed命令很好,您只需要删除模式末尾的额外:
$ sed 's/^.*Fingerprint=//' file
9F:AD:D4:FD:22:24:20:A2:1E:0C:7F:D0:19:C5:80:42:66:56:AC:6F"

这将保留引用。要去掉它们,请匹配一个双引号:
$ sed 's/^.*Fingerprint=\([^"]*\)"$/\1/' file
9F:AD:D4:FD:22:24:20:A2:1E:0C:7F:D0:19:C5:80:42:66:56:AC:6F

关于regex - 如何从开头删除bash中某个特定选定单词的文本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36847681/

10-13 09:19