假设我跑
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