如何跳转到 grep -nr 输出的文件和行?

如何跳转到 grep -nr 输出的文件和行?

假设我跑 grep -nr . -e "This text was found"

并进入 CLI: ./subfolder/file.ext:10 This text was found

即它是文件夹“子文件夹”中文件“file.ext”的第 10 行。

如何使用此标识符“./subfolder/file.ext:10”输出该文件中的行?或者切换到不同文件夹中的路径?

例如,我跳到那里并在 CLI 中看到:

$otherfolder/subfolder/file.ext:10 Another text here

答案1

从问题转移到答案

我想出了这个解决方案。它并不优雅和简短(并且还假设只找到一个事件,但可以对此进行扩展),但可以完成工作。

res=$(grep -nr . -e 'This text was found')
num=$(echo $res | cut -d: -f2)            # extract the number
file=$(echo $res | cut -d: -f2)           # extract the filename
sed -n "${num}p" $file                    # jump to the found line in the found file
folder=$(echo $file | cut -d/ -f1)
subpath=$(echo $file | cut -d/ -f1-)
sed -n "${num}p" $otherfolder/$subpath    # jump to the same line and subfolder structure in the other folder

相关内容