Форум программистов, компьютерный форум, киберфорум
Наши страницы
Shell, Bash
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.60/5: Рейтинг темы: голосов - 5, средняя оценка - 4.60
Profi_GMan
3 / 3 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
Завершенные тесты: 2
1

Напишите скрипт замены текста

16.12.2017, 22:23. Просмотров 911. Ответов 6
Метки нет (Все метки)

Доброго времени суток!
Сразу говорю, я в bash - нуб, сам написать не могу
В общем, нужно написать скрипт, который будет заменять
XML
1
2
<source>Какой-то текст</source>
<translation type="unfinished"></translation>
на
XML
1
2
<source>Какой-то текст</source>
<translation>Такой же текст</translation>
Огромное спасибо!!!
0
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.12.2017, 22:23
Ответы с готовыми решениями:

Скрипт поиска и замены текста в файле
Всем привет! Помогите пожалуйста написать простой скрипт по поиску и замены...

Регулярное выражение для замены текста в файлах .php
Сабж. Есть вирутальный сервер на дебиане, на нём хостятся сайты. Есть...

Напишите скрипт, который будет копировать себя в файл
Помогите написать скрипт, который будет копировать себя в файл, используя...

Подскажите команды для поиска папок, файлов, текста в файлах и его замены
Доброго времени суток, интересует реализация скрипта,для 1.поиска файлов и...

Скрипт для сканирования текста
Добрый день! Задание: Подсчитать количество записей text (к примеру) в...

6
Mysterious Light
Эксперт по математике/физике
4015 / 1976 / 403
Регистрация: 19.07.2009
Сообщений: 3,000
Записей в блоге: 21
19.12.2017, 01:26 2
У меня вот так получилось:
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
tmp='.sed.tmp'
 
a='<source>.*<\/source>$'
 
b='<source>\(.*\)<\/source>\\n<translation type="undefined"><\/translation>'
 
d='<source>\\1<\/source>\\n<translation>\\1<\/translation>'
 
e='s/.*//; h' # clear hold space
 
f='s/^\\n//' # remove leading linebreak
 
s="H; g; $f;\ns/$b/$d/;\n/$a/h;\n/$a/! { p; $e }"
 
echo "$s" > $tmp
 
sed -nf $tmp ex.xml
 
rm $tmp
Кто скажет, как можно проще?

Добавлено через 4 минуты
Я ещё не понял, почему со вспомогательным файлом работает, а просто
Bash
1
sed -n "$s" ex.xml
не работает.

P.S. проверял на таком файле:
XML
1
2
3
4
5
6
7
8
9
<a>
<source>a</source>
<translation type="undefined"></translation>
<b>
<source>b</source>
<translation>b</translation>
<source>c</source>
<translation type="undefined"></translation>
<c>
1
Profi_GMan
3 / 3 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
Завершенные тесты: 2
19.12.2017, 21:49  [ТС] 3
Mysterious Light, пишет
sed: файл .sed.tmp строка 1: неизвестная команда: `<'
0
Mysterious Light
Эксперт по математике/физике
4015 / 1976 / 403
Регистрация: 19.07.2009
Сообщений: 3,000
Записей в блоге: 21
19.12.2017, 23:46 4
Тогда я вообще не понимаю. У меня эта ошибка возникает, если, как я писал, передать строку напрямую. А с файлом всё получается.
Прикладываю zip-архив со скриптом, входным и выходным (созданный после выполнения sh s) файлом.
0
Вложения
Тип файла: zip sed-q.zip (1.0 Кб, 3 просмотров)
Profi_GMan
3 / 3 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
Завершенные тесты: 2
20.12.2017, 11:37  [ТС] 5
Mysterious Light, Вот, кстати входной файл(который нужно обработать): yourdroid_en.zip
0
Profi_GMan
3 / 3 / 4
Регистрация: 11.09.2016
Сообщений: 136
Записей в блоге: 5
Завершенные тесты: 2
20.12.2017, 11:45  [ТС] 6
Цитата Сообщение от Mysterious Light Посмотреть сообщение
sed -n "$s" ex.xml
Попробовал так, тоже не получилось
0
Marinero
Модератор
Эксперт NIX
2142 / 1723 / 585
Регистрация: 02.03.2015
Сообщений: 5,635
24.12.2017, 12:07 7
Лучший ответ Сообщение было отмечено Profi_GMan как решение

Решение

Bash
1
sed '/source/! b;N;s/\(\([^>]*\)<\/.*\) type[^>]*>/\1>\2/' имя_файла
0
24.12.2017, 12:07
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.12.2017, 12:07

Чтобы скрипт на баше запустил через gcc скрипт на c++
Есть скрипт на баше, во время его выполнения нужно чтобы он запустил еще один...

Скрипт замены текста
// Replace censored words in $text function censor_words_do($forum_censors,...

Скрипт замены текста не работает
Скрипт бегает по строкам в файле, если находит нужную строку заменяет данные в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
7
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru