linux - 如何使用指定的字符串进行 grep 并将值存储在 unix 中

标签 linux shell unix

下面是我的输入文件,

Server:         172.16.249.150
Address:        172.16.249.150#53

Non-authoritative answer:
cloud-us-east.digital-element.net       canonical name = usa.cloud.netacuity.com.
usa.cloud.netacuity.com canonical name = us-east.cloud.netacuity.com.
us-east.cloud.netacuity.com     canonical name = de-prod-nacs.elasticbeanstalk.com.
de-prod-nacs.elasticbeanstalk.com       canonical name = awseb-prod-nacs-397853066.us-east-1.elb.amazonaws.com.
Name:   awseb-prod-nacs-397853066.us-east-1.elb.amazonaws.com
Address: 54.243.94.244
Name:   awseb-prod-nacs-397853066.us-east-1.elb.amazonaws.com
Address: 54.243.113.63

我想要如下的输出, 54.243.94.244 54.243.113.63

只有最后两个ip地址,

此外,输入文件将来可能会有所不同,它可能在末尾有很多 ip 地址。所以我需要单独排除第一个 ip。如何实现这个unix?请建议一些命令。提前致谢。

最佳答案

对于给定的输入文件最直接的:

$ grep "Address:" input.txt  | awk -F: '{print $2}' | tail -2
54.243.94.244
54.243.113.63

或者:

$ nslookup cloud-us-east.digital-element.net  | grep "Address:"  | awk -F: '{print $2}' | tail -2

单行,给tr添加一个管道:

$ nslookup cloud-us-east.digital-element.net  | grep "Address:"   | awk -F: '{print $2}' | tail -2 | tr '\012' ' '
54.243.94.244 54.243.113.63

对于“主机”查找:

$ host cloud-us-east.digital-element.net | tr ' ' '\012' | grep -vi "[a-z]"
54.243.113.63
54.243.94.244

编辑:

对于“nslookup”跳过名称服务器:

$ nslookup cloud-us-east.digital-element.net  | grep "Address:" | grep -v "#"  | awk -F: '{print $2}' 
54.243.113.63
54.243.94.244

关于linux - 如何使用指定的字符串进行 grep 并将值存储在 unix 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15916102/

相关文章:

linux - 区分ELF文件中的.shstrtab和.strtab

python-3.x - 如何在基于 Linux 的操作系统上分发基于 python 的软件

linux - 计算所有 .class 文件

linux - 执行脚本时将文件作为脚本的输入

linux - 如何从 Linux (ubuntu) 中的 bash 脚本运行 exec bash 命令?

linux - 用于检查差异的 Bash 脚本

linux - crontab 作业跳过随机运行

linux - 用于本地(非远程)命令执行的 ssh 隧道

c++ - 在 Raspberry Pi 上编译 JUMPCoin 钱包时出错 (leveldb/libmemenv.a : error adding symbols:)

linux - Bash/Shell-将所有文件从子目录 move 到目标目录?