[英]How can i replace particular word from a string with another expression(string) and the another expression has to get some part of particular word
[英]How can I remove text from start to some particular selected word in bash?
我有一个具有以下内容的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中选定的单词(“指纹”)。
sed 's/^.*Fingerprint=://'
它似乎不起作用,因此请建议使用正确的命令。 它可能会或可能不会
使用后引号匹配下一个双引号:
$ 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
提取Fingerprint
值:
sed 's/.*Fingerprint=\([^"]*\)".*/\1/' file1.txt
输出:
9F:AD:D4:FD:22:24:20:A2:1E:0C:7F:D0:19:C5:80:42:66:56:AC:6F
Fingerprint=
和引号之前的所有字符都将被捕获并输出。
您可以检查grep中的字符:
grep -Eo "([0-9A-F]{2}:){19}[0-9A-F]{2}" file1.txt
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.