Grep

如何跳轉到 grep -nr 輸出的文件和行?

  • May 22, 2022

假設我跑步 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

從問題轉到答案

我想出了這個解決方案。它既不優雅也不簡短(並且還假設只找到了一次,但可以在此基礎上進行擴展),但可以完成工作。

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

引用自:https://unix.stackexchange.com/questions/703381