我如何获取(发现)我的 VPS IP 地址,然后对其进行 grep,然后将其放入文件 myinfo.txt 中,放到“这是我的 IP”行
例如,我不知道我的 IP,但我可以使用 ifconfig 命令来了解。任务是编写可以获取(发现)我的 IP 的命令,然后将其放入 tex 文件中的特定行。之后,如果我打开我的文本文件,我必须看到:文本 mytext 文本 IP - 这是我的 IP
我找到了这个命令,但不知道如何正确使用它
IP=$(ip addr | grep 'inet' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | grep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | head -1)
read -p "IP address: " -e -i $IP IP
答案1
cat myinfo.txt | egrep -oE '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
cat myinfo.txt
打印文件
|
将结果传输到下一个命令中
egrep -oE
找到模式*
'[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
是模式,其中:
[0-9]{1,3}
表示“由数字组成的 1 到 3 个字符\.
转义点。否则,模式会将点理解为“您想要的任何字符(包括点,也可以是其中任何一个:abcdef
...)”
编辑 : '[0-9]{1,3}(\.[0-9]{1,3}){3}'
更短,因为你的模式中有重复的模式。你可以使用(
和)
来实现这一点
如果你经常使用该命令,你可能希望在文件中使用alias
该命令.bashrc
echo -e "alias egrep_ipv4=\"egrep -oE '[0-9]{1,3}(\.[0-9]{1,3}){3}'\"" >> $HOME/.bashrc`
source $HOME/.bashrc
然后你只需要将文本通过管道传输到 egrep_ipv4
cat myinfo.txt | egrep_ipv4