Для одной строки формата file:startRow:startCol:endRow:endCol
используйте следующую функцию bash, чтобы напечатать ссылочные строки и выделить ссылочный текст:
highlight() {
IFS=: read -r file srow scol erow ecol <<< "$1"
shl=$'\033[31m' # start highlight, in this case red text
ehl=$'\033[0m' # end highlight, in this case normal text
sed -n "$erow s/./&$ehl/$ecol;$srow s/./$shl&/$scol;$srow,$erow p;$erow q" "$file"
}
Пример использования:
seq -w 1 10000 > file
highlight file:2:4:5:1
печатает
![output: highlighted text](https://i.stack.imgur.com/2hgOa.png)
Для обработки списка / файла с несколькими file:startRow:startCol:endRow:endCol
используйте функцию внутри al oop:
IFS= read -r line; do
highlight "$line"
done < list
Это не самый эффективный подход, поскольку один и тот же файл может быть прочитан несколько раз. Тем не менее, это, вероятно, достаточно эффективно. Я сомневаюсь, что вы заметите какие-либо задержки, даже с большим количеством больших файлов.