我想使用 Shell 脚本打印 /etc/hosts 中的所有 IP 地址和主机名

我想使用 Shell 脚本打印 /etc/hosts 中的所有 IP 地址和主机名

我想/etc/hosts使用 shell 脚本打印 IP 地址和主机名

/etc/hosts文件 :

## #For example:
## #102.54.94.97     rhino.acme.com          # source server
## #38.25.63.10      x.acme.com              # x client host
## #localhost name resolution is handled within DNS itself.
##  #127.0.0.1       localhost
##  #::1             localhost
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa

# #122.55.80.97     bbb.bb.bb
# #122.55.80.98     ccc.cc.cc

我需要输出有效的 IP 地址和主机名,而不是所有行

111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa

不是所有的线

答案1

删除注释掉的和空行的形式/etc/hosts

sed -e 's/#.*//' -e 's/[[:blank:]]*$//' -e '/^$/d' /etc/hosts

sed这按以下顺序使用三个表达式:

  1. 删除 a 之后的所有内容#(包括#)。
  2. 删除行尾的空格(空格或制表符)。
  3. 删除空行。

鉴于您的示例文件,这会产生

111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa
111.11.1.1  aaaa.aa.aa

这显然并没有试图证实留下的地址和名字。

答案2

尝试这个

sed -e '/^#/d' -e '/^\s*$/d' /etc/hosts

将删除所有以 # 开头的行和空行。

相关内容