Форум русскоязычного сообщества Ubuntu


Следите за новостями русскоязычного сообщества Ubuntu в Twitter-ленте @ubuntu_ru_loco

Автор Тема: bash sed где я ошибся (вопрос по синтаксису)  (Прочитано 816 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн StoryTeller

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
#!/bin/bash
# Нужно записать в строку номер $FilePointer строчку символов из переменной $PrepairText

##Начальные данные
#+++++++++++++++++++++++++++++++++++++++
DestDirectory="/tmp"
echo "$DestDirectory"
GoodFileName="Тестовое имя файла"
echo "$GoodFileName"
ControlDynamik="297318125"
echo "$ControlDynamik"
FilePointer="8"
echo "$FilePointer"



##Собственно, проблемный участок
#+++++++++++++++++++++++++++++++++++++++
#Подготовить текст для записи
PrepairText="файл N$FilePointer-$GoodFileName успешно записан. Его длина $ControlDynamik Байт"
echo "$PrepairText"
#Записать текст в LogFile в нужную строку
sed ''$PrepairText' s/.*/'$FilePointer'/' "$DestDirectory/LogFile"


exit 0


##вывод терминала:
#+++++++++++++++++++++++++++++++++++++++
~$ bash Test
/tmp
Тестовое имя файла
297318125
8
файл N8-Тестовое имя файла успешно записан. Его длина 297318125 Байт
sed: -e выражение #1, символ 1: неизвестная команда: `�'

Оффлайн Self-Perfection

  • Активист
  • *
  • Сообщений: 331
  • Arch linux, KDE
    • Просмотр профиля
Re: bash sed где я ошибся (вопрос по синтаксису)
« Ответ #1 : 03 Апреля 2013, 02:11:35 »
sed - stream editor
Обрабатывает поток текста.
Он не берёт текст на обработку из своих аргументов.
« Последнее редактирование: 11 Октября 2013, 12:04:42 от Self-Perfection »
Читайте документацию, наставницу вашу!
Памятка по описанию проблем:
Для решения [такой-то задачи] делаю [такие-то действия], но вместо [ожидаемый результат] получаю [описание отличий].

Оффлайн StoryTeller

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: bash sed где я ошибся (вопрос по синтаксису)
« Ответ #2 : 03 Апреля 2013, 02:40:02 »
Понятно, а как исправить команду, чтобы она нормально отрабатывала, и не выдавала ошибок? (Желательно минимизировать обращение к HDD, до минимально возможного)

Оффлайн Vitsliputsli

  • Старожил
  • *
  • Сообщений: 1293
    • Просмотр профиля
Re: bash sed где я ошибся (вопрос по синтаксису)
« Ответ #3 : 03 Апреля 2013, 10:21:56 »
Вы все перепутали в команде.
Цитировать
Нужно записать в строку номер $FilePointer строчку символов из переменной $PrepairText
т.е. берем файл "$DestDirectory/LogFile" и меняем строку номер $FilePointer на строку $PrepairText. Если так, то:

sed -i "$FilePointer""s/.*/$PrepairText/" "$DestDirectory/LogFile"

Оффлайн StoryTeller

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: bash sed где я ошибся (вопрос по синтаксису)
« Ответ #4 : 06 Апреля 2013, 03:53:11 »
Спасибо, решено!
тут +1 ставить где??

 

Страница сгенерирована за 0.041 секунд. Запросов: 25.