使用 for 循环 grep 文件行

grep the lines of file using for loop

有一个文件,每行显示不同的文件路径。

    ```
      my_file
      /the/first/path/file1
      /the/second/path/file2
      ....
    ```

我想使用 for 循环在每个文件中查找一个字符串。

     ```
      for i in $(cat my_file); do cd "$i"; done | grep -w string "$i"

     ```

但这似乎对我不起作用。我正在为所有文件目录获取此文件

    -bash: cd: /the/first/path/file1: No such file or directory

我做错了什么?在此先感谢您的帮助

不需要 for 循环,使用 xargs:

xargs -a my_file -d '\n' grep -h -w string

注意 #1:我添加了 -h 选项(GNU 扩展名),这样文件名就不会被 grep 添加到输出中(就像在您的命令中一样)。

注意 #2:因为您使用的是 Linux 和 Bash,我假设 GNU xargs。如果您的 xargs 不理解 -a 选项,请改用此选项:

< my_file xargs -d '\n' grep -h -w string