1

所以有一个应用程序可以告诉我我当前的 IP 是什么。输出不仅仅是打印 IP,而是:

Starting GetIP process...
Getting your IP...
Your current IP: 127.0.0.1

有没有办法将IP保存到文件中?通过删除前 2 行和第三行的开头,或者只保存实际的数字和点。

我知道我可以修剪前两行,sed但如何删除第三行的文本?(顺便说一句,预期的输出只是 IP,没有冒号或空格)。

4

1 回答 1

3

您可以通过以下方式轻松做到这一点awk

$ your_command | awk 'END{print $NF}' 
127.0.0.1

要存储到文件,请使用重定向运算符:

$ your_command | awk 'END{print $NF}' > my_ip

在读取输入后执行awkEND块,因此我们正在查看输入的最后一行。NF是一个特殊awk变量,包含当前行上的字段数(在这种情况下为 4),其中默认字段分隔符是空格。该$装置打印字段值,即{print $1}打印$2第二个等的第一个字段值。


一种方法sed

$ your_command | sed -n '3s/.*: //p' 
127.0.0.1

# save to file
$ your_command | sed -n '3s/.*: //p' > my_ip

该选项-n关闭每行的默认打印。我们要操作的行的3地址(行号) 。我们希望对冒号之前的所有内容执行替换(s 命令) ,然后用一个空字符串替换它。正斜杠是选定的分隔符,而是打印命令,因此在替换发生后仅打印第三行。.*:p


使用grep-o选项,您可以打印给定 IP 匹配正则表达式的所有匹配项:

$ your_command | egrep -o '([0-9]{1,3}[.]){3}[0-9]{1,3}$'

# save to file
$ your_command | egrep -o '([0-9]{1,3}[.]){3}[0-9]{1,3}$' > my_ip

Linux 上的最佳解决方案是使用hostname

$ hostname -I
127.0.0.1

# save to file
$ hostname -I > my_ip

但是,这不是可移植的,因为该-I选项可用于该hostname命令的 OSX 版本。

于 2013-08-03T14:16:19.340 回答