【问题标题】:Shell script to parse ip:port from a text file用于从文本文件解析 ip:port 的 Shell 脚本
【发布时间】:2012-07-10 19:56:01
【问题描述】:

我每天都会收到一个带有 ip:port 的文本文件,每行一个,例如:

11.22.33.44:80
22.33.44.55:8080
33.44.55.66:7777

我想在两个不同的变量中解析第一个 ip 和 port,然后将它们写入另一个文件,等待使用这些变量的程序执行,循环此循环以将所有 ip:port 传递给文件并执行程序。

我该怎么做?

谢谢

【问题讨论】:

    标签: bash shell text-parsing


    【解决方案1】:
    cat in.txt | sed -e "s/:/ /" | while read ip port
    do
      echo $ip $port # or do something with it
    done
    

    【讨论】:

    • 工作正常,即使是编辑前的代码,非常感谢:)
    • 我的第一个版本不是很好:)
    • 抱歉,有可能得到 3 种不同的东西?就像 11.22.33.44:80@blabla 一样,我想在其他变量中得到那个 blabla,谢谢
    【解决方案2】:

    纯 bash 解决方案:

    while IFS=: read ip port; do
        echo $ip $port
    done < in.txt
    

    这样做的好处是允许您在 while 循环内设置在循环完成后仍然可用的变量。

    【讨论】:

    • 注意,这不仅仅是纯bash,也是纯sh。
    • 有一天,我会了解哪些功能是 bash 扩展,哪些功能属于 POSIX 规范。
    • 感谢您的解决方案,仍然使用 over 一个,因为我在循环中使用了这些变量
    猜你喜欢
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 2016-06-21
    • 1970-01-01
    • 2014-12-22
    • 2020-06-28
    • 2011-06-28
    相关资源
    最近更新 更多