Grep
如何跳轉到 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
從問題轉到答案
我想出了這個解決方案。它既不優雅也不簡短(並且還假設只找到了一次,但可以在此基礎上進行擴展),但可以完成工作。
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