ano*_*aly -1 linux perl awk grep sed
我有这个grep命令输出文件的名称(包含与某些模式的匹配),我想用一些文件解析程序解析这些文件.pipechain看起来像这样:
grep -rl "{some-pattern}" . | {some-file-parsing-program} > a.out
Run Code Online (Sandbox Code Playgroud)
如何将这些文件名作为文件解析程序的命令行参数?
例如,假设grep收益的文件名a,b,c.如何传递文件名,以便它就像我正在执行一样
{some-file-parsing-program} a b c > a.out
Run Code Online (Sandbox Code Playgroud)
?
它看起来好像你想要的xargs:
grep -rl "{some_pattern" . | xargs your-command > a.out
Run Code Online (Sandbox Code Playgroud)
我不相信它a.out是一个好的输出文件名,但我们可以让它滑动.该xargs命令从标准输入读取空格分隔的文件名,然后your-command使用这些名称作为参数进行调用.它可能需要your-command多次调用; 除非您使用GNU xargs并且您指定-r,your-command否则将至少调用一次,即使没有匹配的文件名.
没有使用xargs,你就无法sed用于这项工作.不使用xargs,使用awk会很笨拙.Perl(和Python)可以"平凡地"管理它; 编写代码以从标准输入读取文件名然后依次处理每个文件会很容易.