我有一个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/