[英]How can I extract a file name from a grep result?
我正在尝试获取系统启动时执行的所有程序的列表。
我的游戏计划如下:
grep -r
/etc/init.d
和/etc/rc.d/*
目录 ./...
) 为此,我使用了以下内容:
egrep -r '^\s*/|\$\(\s*/|\`\s*/' /etc/rc.d/* /etc/init.d
由于它是在目录中搜索文件,因此结果将列出在其中找到的文件以及整行。 现在,我想将结果通过管道传递给某种文件,以获取文件名,通过管道将管道传递给sort|uniq
以获取简化列表。 我想我可以以某种方式使用awk,但是我对此并不熟悉。
结果示例:
/etc/init.d/foo: foo=$(/bin/echo hello)
/etc/init.d/bar: bar=$(/bin/echo world)
/etc/rc.d/init.d/foobar: /bin/false
所需输出:
/bin/echo
/bin/false
如果在egrep中添加-h选项,则不会显示文件名。
egrep -hr '^\s*/|\$\(\s*/|\`\s*/' /etc/rc.d/* /etc/init.d | sed -e 's/\($(\|)\)//g'
sed regex将删除所有的“ $(”和“)”
好的,感谢alb3rtobr的帮助,我能够得到它:
egrep -hor '(^\s*/|\$\(\s*/|\`\s*/)[^ ]*' /etc/rc.d/* /etc/init.d | sed -e 's/\($(\|)\|^\s*\)//g' | sort | uniq
我修改了egrep以继续匹配,直到遇到空格为止,然后添加了-o
选项以仅返回匹配的模式。 我还修改了sed以修剪前导空白。
编辑:更改为匹配模式,而不是空格字符
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.