在一行的第一个单词上运行 xargs

Kev*_*rke 5 xargs

有没有办法只在一行的第一个参数上运行xargs?因此,如果我的输入是 a 的默认输出grep,则如下所示:

./file1       "matching string"
./file2       "matching 2"
Run Code Online (Sandbox Code Playgroud)

我想要做的是在Vim 中使用类似| xargs vim.

我可以告诉xargs只抓取每行的第一个单词吗?

我知道还有其他方法可以做到这一点,包括通过管道连接到AWK以去除所有多余的行垃圾,以及让 grep 仅返回文件名 - 我很好奇您是否可以使用 xargs 来做到这一点。

dan*_*der 8

正如其他人所说,通用xargs不能单独做到这一点。坚持使用常见的 Unix 工具,cut在将其发送到 xargs 之前,您需要使用该命令去除额外信息。

假设您的输入如下所示:

./file1       "matching string"
./file2       "matching 2"
Run Code Online (Sandbox Code Playgroud)

您可以使用|cut -f 1 -d ' ' | xargs -n 1 vi来运行命令。

  • cut -f 1 -d ' '命令仅将第 1 列中的内容发送到输出。
  • xargs -n 1 vi告诉xargs的运行VI,但只使用一个文件的时间。

-n 1如果您想使用单个 vi 实例来编辑所有文件(以保持跨文件的复制/粘贴缓冲区),则可以删除。