Форум программистов, компьютерный форум, киберфорум
Наши страницы

Shell, Bash

Войти
Регистрация
Восстановить пароль
 
Profi_GMan
3 / 3 / 2
Регистрация: 11.09.2016
Сообщений: 132
Записей в блоге: 5
Завершенные тесты: 2
#1

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

16.12.2017, 22:23. Просмотров 255. Ответов 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
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Напишите скрипт замены текста (Bash):

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

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

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

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

Скрипт замены текста - PHP
// Replace censored words in $text function censor_words_do($forum_censors, $text, $unicode) { static $search_for = NULL; static...

Скрипт замены текста не работает - Perl
Скрипт бегает по строкам в файле, если находит нужную строку заменяет данные в строке for(;$i &lt; $len; $i++) { if($str =~...

6
Mysterious Light
Эксперт по математике/физике
3872 / 1890 / 277
Регистрация: 19.07.2009
Сообщений: 2,904
Записей в блоге: 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 / 2
Регистрация: 11.09.2016
Сообщений: 132
Записей в блоге: 5
Завершенные тесты: 2
19.12.2017, 21:49  [ТС] #3
Mysterious Light, пишет
sed: файл .sed.tmp строка 1: неизвестная команда: `<'
0
Mysterious Light
Эксперт по математике/физике
3872 / 1890 / 277
Регистрация: 19.07.2009
Сообщений: 2,904
Записей в блоге: 21
19.12.2017, 23:46 #4
Тогда я вообще не понимаю. У меня эта ошибка возникает, если, как я писал, передать строку напрямую. А с файлом всё получается.
Прикладываю zip-архив со скриптом, входным и выходным (созданный после выполнения sh s) файлом.
0
Вложения
Тип файла: zip sed-q.zip (1.0 Кб, 3 просмотров)
Profi_GMan
3 / 3 / 2
Регистрация: 11.09.2016
Сообщений: 132
Записей в блоге: 5
Завершенные тесты: 2
20.12.2017, 11:37  [ТС] #5
Mysterious Light, Вот, кстати входной файл(который нужно обработать): yourdroid_en.zip
0
Profi_GMan
3 / 3 / 2
Регистрация: 11.09.2016
Сообщений: 132
Записей в блоге: 5
Завершенные тесты: 2
20.12.2017, 11:45  [ТС] #6
Цитата Сообщение от Mysterious Light Посмотреть сообщение
sed -n "$s" ex.xml
Попробовал так, тоже не получилось
0
Marinero
Модератор
Эксперт NIX
1955 / 1625 / 496
Регистрация: 02.03.2015
Сообщений: 5,308
24.12.2017, 12:07 #7
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
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
Привет! Вот еще темы с ответами:

Скрипт сравнения текста и его замены - Python
Сам я, увы программировать не умею, долго искал в интернете нечто подобное, но увы, ничего не нашел, поэтому прошу вас, добрых форумчан...

Скрипт поиска и замены цвета текста - VBA
Ещё раз здравствуйте. Помогите со скриптом поиска и замены цвета текста белого на черный. Заранее благодарен.

Самый простой и РАБОТАЮЩИЙ скрипт для замены текста в файле - CMD/BAT
Очень плохо разбираюсь в этих скриптах, надеюсь на понимание....

Напишите программу замены положительных элементов вещественного массива Y[1..N] на 0 - Pascal ABC
массив


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

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

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