Я не впевнений, чому цей заголовок питання було відредаговано " з файлу " в " з рядка ", в той час як ОП не виключає можливості через кілька рядків, хоча приклад здається лише одним рядком. Як би там не було, тут може бути корисно надати рішення для кількох ліній.
Це працює для перехресних ліній:
from1=consectetuer; to2=elit; a="$(cat file)"; a="$(echo "${a#*"$from1"}")"; echo "$from1${a%%"$to2"*}$to2"
Приклади:
[xiaobai@xiaobai tmp]$ cat file
1
abc consectetuer lsl
home
def elit dd
2 consectetuer ABC elit
[xiaobai@xiaobai tmp]$ from1=consectetuer; to2=elit; a="$(cat file)"; a="$(echo "${a#*"$from1"}")"; echo "$from1${a%%"$to2"*}$to2"
consectetuer lsl
home
def elit
[xiaobai@xiaobai tmp]$
довідка: Розширення параметра оболонки
sed. Це також може бутиperlабо навіть чистий баш.