Linux 如何在文件中grep查找密钥?

Linux 如何在文件中grep查找密钥?,linux,bash,grep,sh,rhel,Linux,Bash,Grep,Sh,Rhel,我有一个包含以下值的文本文件 Key 1: 0e3f02b50acfe57e21ba991b39d75170d80d98e831400250d3b4813c9b305fd801 Key 2: 8e3db2b4cdfc55d91512daa9ed31b348545f6ba80fcf2c3e1dbb6ce9405f959602 我使用下面的grep命令来提取键1的值 您的grep将Key 1=更改为Key 1时出错: 似乎对我有用。如果你的grep版本不支持PCRE,你可以对sed做同样的操作,例

我有一个包含以下值的文本文件

Key 1: 0e3f02b50acfe57e21ba991b39d75170d80d98e831400250d3b4813c9b305fd801
Key 2: 8e3db2b4cdfc55d91512daa9ed31b348545f6ba80fcf2c3e1dbb6ce9405f959602
我使用下面的grep命令来提取键1的值


您的grep将Key 1=更改为Key 1时出错:

似乎对我有用。

如果你的grep版本不支持PCRE,你可以对sed做同样的操作,例如

解释

-n抑制图案空间的正常打印

/^键1:[^]/查找模式

s/^Key 1://不能用任何东西代替图案

p打印剩余部分

grep+cut解决方案:搜索右键,然后返回第三个字段:

$ grep '^Key 1:' abc.txt | cut -d' ' -f3
或者,等效于awk:


不要使用grep修改匹配字符串,如果sed已经简洁、可移植地进行了修改,那么它将毫无意义、混乱且不可移植:

$ sed -n 's/^Key 1: //p' file
0e3f02b50acfe57e21ba991b39d75170d80d98e831400250d3b4813c9b305fd801
grep -Po '(?<=Key 1: )[^"]*' abc.txt
grep -oP '(?<=Key 1: )[^"]+' abc.txt
$ sed -n '/^Key 1: [^"]/s/^Key 1: //p' file.txt
0e3f02b50acfe57e21ba991b39d75170d80d98e831400250d3b4813c9b305fd801
$ grep '^Key 1:' abc.txt | cut -d' ' -f3
$ awk '/^Key 1:/ { print $3 }' abc.txt
$ sed -n 's/^Key 1: //p' file
0e3f02b50acfe57e21ba991b39d75170d80d98e831400250d3b4813c9b305fd801