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


Получить помощь и пообщаться с другими пользователями Ubuntu можно
на irc канале #ubuntu-ru в сети Freenode
и в Jabber конференции ubuntu@conference.jabber.ru

Автор Тема: Как вставить новую строку в существующий файл?  (Прочитано 2288 раз)

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

Оффлайн djrust

  • Автор темы
  • Активист
  • *
  • Сообщений: 861
    • Просмотр профиля
Azure,
Спасибо

echo -e "#адрес сервера\r" > $keydir/$keyname.ovpnРаботает хорошо,т.е то что нужно!


А вот 3й вариант не срабатывает
while read line
    do
        eval echo $line
    done < ~/shablon.ovpn > ~/${keyname}.ovpn
sed -i s/$/\r/ ~/${keyname}.ovpn

получаю
# адрес сервераr
remote ip 1194r
remote ip 1194r
r
clientr
r


Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Наоборот! Внесите изменения в shablon.ovpnsed -i s/$/\\r/ ~/shablon.ovpnТогда и скрипт будет работать.while read line
    do
        eval echo $line
    done < ~/shablon.ovpn > ~/${keyname}.ovpn
« Последнее редактирование: 19 Февраля 2014, 23:30:06 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн djrust

  • Автор темы
  • Активист
  • *
  • Сообщений: 861
    • Просмотр профиля
Azure,
Сделал,получил тоже самое

# адрес сервераr
remote IP 1194r
remote IP 1194r
# говорим что клиентr

и почему применение на шаблон?
он должен оставаться не изменным

получаю по две rr
« Последнее редактирование: 19 Февраля 2014, 23:30:05 от djrust »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Я поправил: \\r (у sed надо экраинровать символ «\»)
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн djrust

  • Автор темы
  • Активист
  • *
  • Сообщений: 861
    • Просмотр профиля
Я попробовал
sed 's/$'"/`echo \\\r`/"

Он хоть пустых строк в шаблоне не создает
« Последнее редактирование: 19 Февраля 2014, 23:36:05 от djrust »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Пустые строки потому что Вы несколько раз shablon.ovpn пропускаете через sed. Один раз шаблон исправьте и всё. Для проверки прогоните его через hdcat shablon.ovpn | hd -cСтроки должны заканчиваться \r \n
« Последнее редактирование: 19 Февраля 2014, 23:45:22 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн djrust

  • Автор темы
  • Активист
  • *
  • Сообщений: 861
    • Просмотр профиля
Azure,
ёмае....Я думаю чего у меня не получается...

Надо было сразу написать,что добавь после каждой строки в шаблоне ^M
а я туда пихал \r ^M
я ведь не вкурсе был :-\

а я
sed -i s/$/\\r/ ~/shablon.ovpnв скрипт и пихаю.....

Правильно наверно будет не шаблон править,а на выходе получать нормальный $keyname.ovpn
Как сделать?

В итоге имеем

while read line
    do
        eval echo -e $line
    done < ~/shablon.ovpn > ~/${keyname}.ovpn
sed -i s/$/\\r/ ~/${keyname}.ovpn

И все работает!При этом шаблон может быть любым

А как навесить форму отправки на почту?Чтобы спрашивалось,хотите отправить по почте?да,нет...если да то давалась форма набора почты?
Это уже отдельная тема?
« Последнее редактирование: 19 Февраля 2014, 23:59:41 от djrust »

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
Сделайте нормальный шаблон и $keyname.ovpn будет нормальный.

Можно левое ухо правой ногой чесать… Зачем вкладывать в скрипт и делать лишнюю операцию каждый раз, когда можно сделать один раз и насовсем?
« Последнее редактирование: 20 Февраля 2014, 00:02:56 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн djrust

  • Автор темы
  • Активист
  • *
  • Сообщений: 861
    • Просмотр профиля
Цитировать
Зачем вкладывать в скрипт и делать лишнюю операцию каждый раз, когда можно сделать один раз и насовсем?
удалю я shablon.ovpn специально или нечаянно...создам новый,а у меня ничего не взлетит.Надо будет вспоминать команду - это в лучшем случае...а если забуду от чего это происходит ?...бывает,что не касаешься этого очень долго....и забываешь,как и для чего делалось!

Оффлайн Azure

  • Модератор раздела
  • Старожил
  • *
  • Сообщений: 6017
  • Windows10, i3wm on Debian9, Manjaro20.0
    • Просмотр профиля
? Вообще-то это азы… Запишите где-то на бумажке, что "окончание строки в Windows обозначается двумя символами:
  • возврат каретки «carriage return» (<СR> = \r = ^M )
  • перевод строки «line feed» (<LF> = \n = ^J ).

В Линукс только одним, последним." На самый крайний случай
 :coolsmiley: а если забудете как буква «А» пишется?
« Последнее редактирование: 20 Февраля 2014, 00:29:55 от Azure »
В Линукс можно сделать ВСЁ что угодно, достаточно знать КАК !

Оффлайн djrust

  • Автор темы
  • Активист
  • *
  • Сообщений: 861
    • Просмотр профиля
Цитировать
? Вообще-то это азы
Я очень редко этого касаюсь!

Цитировать
:coolsmiley: а если забудете как буква «А» пишется?
пойду в школу) ;)
« Последнее редактирование: 20 Февраля 2014, 00:24:25 от djrust »

Оффлайн peregrine

  • FSM
  • СуперМодератор
  • Старожил
  • *
  • Сообщений: 7203
  • Gentoo x64 Ubuntu 16.04.1 x64
    • Просмотр профиля
Azure, вы немного неточно пишете. Не двумя символами \r \n, а двумя символами, которые обычно авторы ЯП (языков программирования) представляют как \r \n, а если ещё точнее говорить, то конец строки в Windows обозначают - 0D 0A в HEX представлении файла.

 

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