Awk 仅显示/etc/services文件中的注释的脚本

Awk 仅显示/etc/services文件中的注释的脚本,awk,Awk,我需要编写一个bash脚本,将服务名称作为参数,并且只显示在/etc/services中哈希符号之后的注释,但我不知道如何只剪切注释部分 对我来说,它的有效解决方案“”是: grep "^$1" /etc/services | awk '{print $3,$4 ... 但我认为这不是个好主意 我正在搜索类似以下内容: [查找服务]->仅打印从#到行尾的部分 我仍在学习,因此任何带有解释或提示的解决方案都将对我非常有帮助。尝试以下方法: SERVICE\u NAME=lin

我需要编写一个bash脚本,将服务名称作为参数,并且只显示在/etc/services中哈希符号之后的注释,但我不知道如何只剪切注释部分

对我来说,它的有效解决方案“”是:

grep "^$1" /etc/services | awk '{print $3,$4 ...
但我认为这不是个好主意

我正在搜索类似以下内容:

[查找服务]->仅打印从#到行尾的部分

我仍在学习,因此任何带有解释或提示的解决方案都将对我非常有帮助。

尝试以下方法:

SERVICE\u NAME=linuxconf;grep-Po“^$SERVICE\u NAME.*.\K.*$”/etc/services
-p告诉grep使用perl正则表达式

-o修剪输出,使其仅包含正则表达式匹配


\K告诉正则表达式引擎从匹配中排除先前匹配的字符串部分,即只有在\K之后的部分才会出现在最终匹配中。

很可能这就是您要查找的内容:

awk -v svc="$1" '($1==svc) && sub(/[^#]+#/,"")' /etc/services
但如果没有样本输入/输出,这只是猜测


上述方法可以在每个Unix设备上的任何shell中使用任何awk。

这是正确的,实际上不需要
awk
。但正如grep知道如何搜索文件一样。最后一件事:请您按照oP的要求,对您的正则表达式和
-oP
选项添加一些解释,好吗?同意cat。对于正则表达式,-P告诉grep使用perl正则表达式,-o修剪输出,使其只包含正则表达式匹配\K告诉正则表达式引擎从匹配中排除先前匹配的字符串部分,即只有\K之后的部分将出现在最终匹配中。它不是working@basper,请您提供一些从/etc/services文件到testOk的行,很抱歉,可能是我第一次打错了。。。它起作用了,谢谢!如果您希望您的问题包含一个简洁、可测试的示例输入和预期输出,那么我们可以为您提供最好的帮助。