Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 基于第一行进行过滤,然后使用它获取第二行的数据_Bash_Awk - Fatal编程技术网

Bash 基于第一行进行过滤,然后使用它获取第二行的数据

Bash 基于第一行进行过滤,然后使用它获取第二行的数据,bash,awk,Bash,Awk,我正在使用BASH,并试图过滤掉散列密码。此密码属于用户“user”,但密码位于下面列出的命令的下一行 我需要使用AWK过滤掉第一行和第二行,然后从第二行提取哈希密码 我不知道从哪里开始 干杯 下面是我试图读取的文本文件所包含内容的示例: user "user" password "IIkku2FE3Q/8.0FWxRL0lE" hash2 console member "administrative"

我正在使用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
我应该补充一点,参数密码IIkku2FE3Q/8.0FWxRL0lE hash2重复了多次。我只需要过滤掉与用户“user”关联的一个

谢谢。

这对你有用吗

awk 'f&&/password/{print $2;exit}/user/&&$2=="\"user\""{f=1}' file
这对你有用吗

awk 'f&&/password/{print $2;exit}/user/&&$2=="\"user\""{f=1}' file
您可以使用此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
您可以使用此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
这个gnu awk应该做到:

awk -v RS="user " -F\" '$2=="user" {print $4}' file
IIkku2FE3Q/8.0FWxRL0lE
这个gnu awk应该做到:

awk -v RS="user " -F\" '$2=="user" {print $4}' file
IIkku2FE3Q/8.0FWxRL0lE
或者尝试:

如果要在Solaris/SunOS系统上尝试此操作,请将awk更改为/usr/xpg4/bin/awk、/usr/xpg6/bin/awk或nawk,或者尝试:



如果要在Solaris/SunOS系统上尝试此操作,请将awk更改为/usr/xpg4/bin/awk、/usr/xpg6/bin/awk或nawk,谢谢。我应该补充一点,参数密码IIkku2FE3Q/8.0FWxRL0lE hash2重复了多次。我只需要提取与用户关联的密码。我相信现在需要的是一个AWK语句,它将“user”作为变量,同时包含密码本身。谢谢,快到了。但是,显示的密码显示的是“User1”而不是“user”。谢谢。@美索不达米亚尝试新的解决方案。我能够根据您的输入文件得到正确答案。谢谢Jaypal。所有这些都与约特的回答非常吻合。我真的很感谢你的帮助。嗨,谢谢你。我应该补充一点,参数密码IIkku2FE3Q/8.0FWxRL0lE hash2重复了多次。我只需要提取与用户关联的密码。我相信现在需要的是一个AWK语句,它将“user”作为变量,同时包含密码本身。谢谢,快到了。但是,显示的密码显示的是“User1”而不是“user”。谢谢。@美索不达米亚尝试新的解决方案。我能够根据您的输入文件得到正确答案。谢谢Jaypal。所有这些都与约特的回答非常吻合。我真的很感谢你的帮助。嗨,阿努巴瓦,这似乎不起作用。我使用更少的文件| awk,而且我似乎无法提取哈希密码!谢谢。有了你的问题,我得到的结果和上面显示的一样。@Mesopotamia:检查我的更新答案。您可以使用-v un=选项在命令行上提供任何用户,并将对其进行搜索和打印。谢谢anubhava。Jotne的回答很好。嗨,anubhava,这似乎不起作用。我使用更少的文件| awk,而且我似乎无法提取哈希密码!谢谢。有了你的问题,我得到的结果和上面显示的一样。@Mesopotamia:检查我的更新答案。您可以使用-v un=选项在命令行上提供任何用户,并将对其进行搜索和打印。谢谢anubhava。Jotne的回答对所有人都很有用。这一个很有魅力。谢谢你,乔恩。我真的很感激。这个很有魅力。谢谢你,乔恩。我真的很感激。