根据第一行过滤掉,然后使用它来获取第二行的数据

时间:2014-02-17 03:38:51

标签: bash awk

我正在使用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”重复多次。我只需要过滤掉与用户'用户'相关联的那个。

谢谢。

4 个答案:

答案 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/awknawk < / p>

答案 3 :(得分:0)

这对你有用吗<​​/ p>

awk 'f&&/password/{print $2;exit}/user/&&$2=="\"user\""{f=1}' file