我想弄清楚如何在服务器的多个配置文件中找到字符串的last 条目。每个字符串都将在/home/***usernamewouldbehere/public_html/typo3conf/localconf.php 文件中
简而言之 - 配置文件中的最后一个条目将指向应用程序正在使用的数据库服务器 - 我们需要知道哪些帐户指向哪个数据库服务器。
虽然我可以运行这样的东西 -
grep "$_db_host" /home/*/public_html/conf/localconf.php
它并没有多大帮助,因为它为我们提供了很多信息……而不是我们真正需要的信息。
我真正需要知道的是这个字符串的最后一个条目 $_db_host = 'xx';并将它们整理到导出文件中
由于配置文件可能有多个条目(下面的示例)
$_db_host = 'localhost';
$_db_host = '10.0.1.234';
最好在文件中列出所有具有“localhost”条目的文件 然后列出所有具有“10.0.1.234”条目(或可能存在的任何服务器)的条目,但即使我需要手动执行此操作也很好。
我不确定如何使用 Awk 实现它 - ... 并且真的卡住了
我希望的是如下所示的管道
db_host = localhost /home/username1/www/conf/localconf.php
db_host = localhost / home/username2/public_html/conf/localconf.php
db_host= '10.1.2.23' /home/username55/public_html/conf/localconf.php
希望对你有所帮助:-)
最佳答案
有点不清楚你在问什么。无需进入 perl 或 awk 也许你可以使用类似的东西
grep -H '$_db_host =' /home/*/public_html/typo3conf/localconf.php | tail -n 1
或者,如果您想要每个文件中的最后一个(bash 语法):
for i in (/home/*/public_html/typo3conf/localconf.php); do
grep -H '$_db_host =' $i /dev/null | tail -1
done
如果您想按 $_db_host 的特定值进行分类,您可以使用排序(有或没有尾部技巧):
grep -H '$_db_host =' /home/*/public_html/typo3conf/localconf.php | sort -t = -k 2,2
(排序说使用“=”作为字段分隔符,然后按第二个字段排序——这将有效地按 $_db_host 的值排序,-H grep 输出将告诉 grep 显示文件名开头的匹配行。
请注意,您也可以通过管道传递上面循环的输出:
for i in (/home/*/public_html/typo3conf/localconf.php); do
grep -H '$_db_host =' $i /dev/null | tail -1
done | sort -t = -k 2,2
您可以根据需要混合或匹配您的工具!
另一个非常有用的工具是“cut”(使用 -d 指定字段分隔符),您可以使用它来分离输出。
(您也可以在 perl 和 awk 中完成所有这些,但有时,尤其是对于“一次性”,shell 管道更容易)
关于linux - 如何在配置文件中查找设置的最后一个实例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4542746/