我正在使用BASH而我正在尝试过滤掉一个哈希密码。此密码属于用户'user',但密码位于下面列出的命令的以下行中。
我需要使用AWK过滤掉第一行和第二行,然后从第二行提取散列密码。
我不知道从哪里开始!
干杯
以下是我正在尝试阅读的文本文件包含的示例:
user "user"
password "IIkku2FE3Q/8.0FWxRL0lE" hash2
console
member "administrative"
exit
user "user1"
password "kIieE9XarvNxuBum8dO2ek" hash2
access console ftp
console
member "administrative"
exit
exit
user "admin"
password "CdsDs3VDuklNg/Yau91HG." hash2
access console
console
no member "default"
exit
exit
我应该补充说,参数“password”IIkku2FE3Q / 8.0FWxRL0lE“hash2”重复多次。我只需要过滤掉与用户'用户'相关联的那个。
谢谢。
答案 0 :(得分:3)
此gnu awk
应该:
awk -v RS="user " -F\" '$2=="user" {print $4}' file
IIkku2FE3Q/8.0FWxRL0lE
答案 1 :(得分:1)
你可以使用这个awk:
awk -v un="user" '{gsub(/"/, "")}
$1=="user" && $2==un{u=$2;next} u && $1=="password"{print u,$2;exit}' OFS=, pfile
user,IIkku2FE3Q/8.0FWxRL0lE
答案 2 :(得分:1)
或尝试:
$ awk '$2 == usr{getline;print $2;exit}' FS=\" usr="user" file
IIkku2FE3Q/8.0FWxRL0lE
如果您想在Solaris/SunOS system
上尝试此操作,请将awk
更改为/usr/xpg4/bin/awk
,/usr/xpg6/bin/awk
或nawk
< / p>
答案 3 :(得分:0)
这对你有用吗</ p>
awk 'f&&/password/{print $2;exit}/user/&&$2=="\"user\""{f=1}' file