Как вывести фрагмент из текстового файла в BASH?

Уже 5 час сижу и не могу придумать даже алгоритм по которому бы работал этот скрипт.
Прошу вашей помощи )

Само задание:
Сценарий выдаёт фрагмент файла, поступающего на стандартный ввод. Фрагмент задаётся в виде прямоугольного блока с указанными координатами в символах (от 0). В командной строке задаётся левый верхний угол блока и правый нижний. Сначала номер строки, затем колонка. Команду cut не использовать!

Пример:

$ cat example.txt
У попа была собака,
Он её любил.
Она съела кусок мяса.
Он её убил.

$./myscript.sh 1 3 3 7 < example.txt
её лю
съел
её уб
  • Вопрос задан
  • 229 просмотров
Решения вопроса 1
xotkot
@xotkot
хорошо есть и хорошо весьма
myscript.sh
#!/usr/bin/env bash

x1=$1; y1=$2
x2=$3; y2=$4
x=0
while read line
do
	if (( $x >= $x1 && $x <= $x2 )); then
		echo "${line:$y1:$[y2-y1+1]}"
	fi
	x=$[x+1]
done

грубый вариант, при желании дооптимизируешь
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
jcmvbkbc
@jcmvbkbc
"I'm here to consult you" © Dogbert
#! /bin/sh

TOP=$(($1 + 1))
BOT=$(($3 + 1))

LEFT=$2
WIDTH=$(($4 - $2 + 1))

sed -n "$TOP,$BOT s/.\{0,$LEFT\}\(.\{0,$WIDTH\}\).*$/\1/p"

$ ./win.sh 1 3 3 7
У попа была собака,
Он её любил.
Она съела кусок мяса.
Он её убил.
её лю
 съел
её уб
$
Ответ написан
Комментировать
Раздел Substring Extraction https://www.tldp.org/LDP/abs/html/string-manipulat...
${string:position:length}
Проще простого же!
Ответ написан
Комментировать
@xtress
Web-dev
Копать от:
sed -n '1 3p' example.txt | awk '{print $3, $4, $5, $6, $7}' | column -t

p.s.
Должно быть примерно так, с утра как доьерусь до ноута - скажу точнее
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы