反向DNS样式字符串

时间:2017-12-04 19:26:30

标签: bash shell terminal

在Debian环境中运行的脚本中,反转DNS样式字符串的好方法是什么?

例如,如果我的脚本有:

example.org

什么是扭转它的好方法,以便字符串可读:

org.example

更长的例子:

www.example.org

应该转为:

org.example.www

3 个答案:

答案 0 :(得分:1)

您可以使用迭代方法构建反向地址:

  • 将反转结果初始化为空字符串
  • 字符串包含.
    • 使用参数展开${var##*.}
    • 提取最后一段从开始到点的所有内容
    • 使用其他参数展开${var%.*}
    • 切断最后一个细分
    • 将反向结果附加到先前保存的最后一段

这是使用纯Bash功能实现的一种方法:

rdns() {
    local s=$1
    local reversed last

    while [[ "$s" == *.* ]]; do
        last=${s##*.}
        s=${s%.*}
        reversed=$reversed$last.
    done

    reversed=$reversed$s

    echo "$reversed"
}

rdns example
rdns example.org
rdns www.example.org

输出:

example
org.example
org.example.www

答案 1 :(得分:0)

这可能会

s='www.example.org'
echo $s | tr '.' '\n' | tac | paste -sd.

答案 2 :(得分:0)

你可以尝试

sed -E 's/\./\n/g;s/$/\n/;:A;s/([^\n]*)\n(.*)(\n)(.*)/\2\3.\1\4/;tA;s/\n//'