@xFinder

Как собрать команду для редактора SED?

Пытаюсь посредством цикла собрать команду для редактора SED.
Среда: Ubuntu 14 / FreeBSD 8.2
средства: Большой текстовый файл, скрипт для его обработки.
Идея такова: при каждом проходе цикла я получаю 2 числа, номера строки начала фрагмента текста и номер конца фрагмента.
Эти фрагменты хочу в конце работы цикла експортировать в другой файл (в идеале удалив из оригинального файла, но это потом...), или удалить из файла, как я дальше и пытался реализовать...

переменная в теле цикла:
sedconstructor="$sedconstructor -e $head_pos,$end_pos d"

в конце цикла переменная содержит такое значение:
echo "$sedconstructor"
-e 1,3 d -e 5,7 d -e 9,11 d -e 13,15 d -e 17,19 d

Идеально, но без '' немогу запустить в sed: sed: -e выражение #1, позиция 3: пропущена комманда

Должно получиться вроде так: -e '1,3 d' -e '5,7 d' -e '9,11 d' -e '13,15 d' -e '17,19 d'
Но уже день бъюсь - и немогу придумать...

Подскажите пожалуйста -Как это оживить.

Вот сам скрипт:

#!/bin/bash
set -x
touch test.txt
echo {1..20} | sed 's/\ /\n/g' > test.txt
for (( cnt=1; cnt<=20; cnt++ ))
do
head_pos=$cnt
end_pos=$(($cnt+2)) #число отвинта...
cnt=$(($cnt+3))
echo $cnt
sedconstructor="$sedconstructor -e $head_pos,$end_pos d"
done

echo "$sedconstructor"
sed $sedconstructor test.txt > result.txt
  • Вопрос задан
  • 2398 просмотров
Пригласить эксперта
Ответы на вопрос 2
@xFinder Автор вопроса
Ответ.
изменить переменную в цикле на :
sedconstructor="$sedconstructor $head_pos,$end_pos d;"
#убрать -e, добавить ; в конце

а строку для sed видоизменить на:
sed -e "$sedconstructor" test.txt > result.txt
Ответ написан
Комментировать
@atimonin
Просто уберите пробел в "...$head_pos,$end_pos d" (чтобы в итоге получалось
что-то типа ".... -e 9,11d -e 13,15d ....")
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы