【问题标题】:How can I make the Field Separator be both a full stop and a space? (Bash Script)如何使字段分隔符既是句号又是空格? (重击脚本)
【发布时间】:2015-12-20 12:16:20
【问题描述】:

我正在尝试检查服务器列表是否都具有有效的 PTR 记录。我的问题是要比较服务器列表 afg 目前我已经完成了以下操作:

hostlist=$(echo /locationOfhostfile | awk 'BEGIN { FS=":" } ; { print $4 }' | xargs -i host {})

这将返回以下格式的所有服务器(name.location.com 是 IPAddress 以及它们拥有的任何别名)。然后我在服务器上执行 dig -x 如下:

ptrrecords=$($(echo "$hostlist" | awk '{ print $3 }' | tr -d ',' | xargs -i dig +short -x {})

这仅返回具有有效 PTR 的服务器的名称。 (名称.location.com) 我现在想比较这两个列表,所以我创建了另外 2 个变量来缩短这两个列表,使其只有服务器名称。

finalhostlist=$(echo "$hostlist" | awk 'BEGIN { FS="." } ; { print $1 }')
finalptrrecords=$(echo "$ptrlist" | awk 'BEGIN { FS="." } ; { print $1 }')

当我比较这两个变量时,我的问题是 2 个服务器不遵循正常的命名约定 (name.location.com),结果显示为 server is 10 作为第一个“。”因为该行是在 IP 地址期间。此问题发生在 finalhostlist 变量中。 如何将 $finalhostlist 的字段分隔符设为句号或空格?

为我提出这个问题的冗长方式道歉。

【问题讨论】:

  • 设置 ifs。 IFS=". "
  • 我可以发誓我昨天尝试了这个但无济于事。这现在可以工作了,非常感谢!

标签: bash unix scripting aix


【解决方案1】:

[我们]可以使用FS="[. ]"; – amdixon

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-07-21
    • 2012-11-10
    • 2017-07-09
    • 1970-01-01
    • 2012-02-10
    • 1970-01-01
    • 2014-05-24
    • 2021-03-28
    相关资源
    最近更新 更多