我们有一个从文件中获取设置参数的应用程序。我想从启动字符串中提取一两个语句并将它们呈现为一个漂亮的表。
示例字符串是 -Dmysql.host=mysql1.company.com,但它也可能是 IP 地址或机器名称,而不是 fqdn。
我想找到 -Dmysql.host= 但返回服务器名。
一旦我在文件中找到字符串“-Dmysql.host=”,有关如何将所有内容显示到下一个空格的任何提示或指针,将不胜感激。
也许有更好的方法。我计划在十几台机器上运行它,最终返回一个列表,其中列出了哪些应用程序机器被配置为与哪台 db 机器一目了然。
谢谢你的时间。
尝试这个:
您最终应该得到一个值,即 mysql.host 的值。如果需要,您也可以将 -D 放入匹配项中,但我已将其省略,因为它是 grep 的参数,您需要对其进行转义。
根据给出的信息,我将首先根据空格拆分所有内容,然后根据 = 符号拆分这些标记。纯 bash 解决方案将类似于以下内容。
由于 IFS 可能是空格,因此 shell 会根据空格进行拆分。然后,您可以使用参数(变量)扩展来处理基于等号的键/值对。
将文件提供给旧的 sed 怎么样:
所以在你的情况下,你会像这样向它提供文件:
我意识到 sed 可以处理其中的 grep ,但这只是更容易编写,sed 可能很尴尬。