Форум программистов, компьютерный форум, киберфорум
Shell, Bash
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.82/22: Рейтинг темы: голосов - 22, средняя оценка - 4.82
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462

Убрать лишний текст

02.10.2012, 15:42. Показов 4281. Ответов 16
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
------WebKitFormBoundaryqchFM7hLgCJTF6aX
Content-Disposition: form-data; name="upload"; filename="test.xml"
Content-Type: text/xml

<xml> <source> <ip>127.0.0.1</ip> <login>postgres</login> <pwd>634</pwd> <dbname>source</dbname> <table>users</table> <fields> <field>surname</field> <field>name</field> </fields> <where>1=1</where> <type>psql</type> </source> <receiver> <ip>127.0.0.1</ip> <login>root</login> <pwd>374</pwd> <dbname>test</dbname> <table>newtb</table> <fields> <field>first</field> <field>second</field> </fields> <where>name="Sergii"</where> <type>mysql</type> <str>`first` VARCHAR(255), `second` VARCHAR(255)</str> </receiver> </xml>
------WebKitFormBoundaryqchFM7hLgCJTF6aX
Content-Disposition: form-data; name="press"

OK
------WebKitFormBoundaryqchFM7hLgCJTF6aX--
как убрать лишний текст что бы осталось только?

<xml> <source> <ip>127.0.0.1</ip> <login>postgres</login> <pwd>634</pwd> <dbname>source</dbname> <table>users</table> <fields> <field>surname</field> <field>name</field> </fields> <where>1=1</where> <type>psql</type> </source> <receiver> <ip>127.0.0.1</ip> <login>root</login> <pwd>374</pwd> <dbname>test</dbname> <table>newtb</table> <fields> <field>first</field> <field>second</field> </fields> <where>name="Sergii"</where> <type>mysql</type> <str>`first` VARCHAR(255), `second` VARCHAR(255)</str> </receiver> </xml>

вот так я сохраняю содержимое переменной в файле echo $QUERY_STRING >> /tmp/file.xml
как перед записью очистить данный файл?ну либо просто удалить
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
02.10.2012, 15:42
Ответы с готовыми решениями:

Как убрать лишний текст
Добрый вечер форумчане, следующая ситуацию: Я подсасываю некоторые данные со стороннего сайта, а конкретнее количество игроков. Беру я их...

Неправильно отображается текст (лишний текст при вводе точки)
Привет всем, нид хел по коду С++. Все работает, но не правильно отображает текст ( лишний текст при вводе символа (точки) '.'...

Убрать лишний элемент
Есть товар в каталоге - http://elamed.com/catalog/catalog/magnitoterapiya-magnitoterapiya-v-domashnikh-usloviyakh/tovar-6 Нужно убрать из...

16
Заблокирован
02.10.2012, 16:26
может его просто перезаписать?
echo $QUERY_STRING > /tmp/ file.xml
файл перезапишется новыми данными

Добавлено через 2 минуты
не совсем понятно что вы хотите. зачем удалять файл перед записью.
1
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462
02.10.2012, 19:45  [ТС]
ну например уже есть файл file.xml. и он уже не нужно. и нужно загрузить новый xml и работать с ним.
а в файле уже есть например <xml...../xml> и когда я выполняю echo $QUERY_STRING >> /tmp/file.xml то они как бы склеются

Добавлено через 37 секунд
на данный момент я хочу убрать лишний текст в переменной.
0
Заблокирован
03.10.2012, 01:29
я думаю стоит попробовать с grep и регулярными выражениями. попросить grep показать строки которые начинаются с <xml> имеют любое кол-во одиночных символов и заканчиваются на <\xml>
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.10.2012, 02:05
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[guest@localhost tmp]$ sed -n '/<xml>/p' >file.txt
------WebKitFormBoundaryqchFM7hLgCJTF6aX
Content-Disposition: form-data; name="upload"; filename="test.xml"
Content-Type: text/xml
 
<xml> <source> <ip>127.0.0.1</ip> <login>postgres</login> <pwd>634</pwd> <dbname>source</dbname> <table>users</table> <fields> <field>surname</field> <field>name</field> </fields> <where>1=1</where> <type>psql</type> </source> <receiver> <ip>127.0.0.1</ip> <login>root</login> <pwd>374</pwd> <dbname>test</dbname> <table>newtb</table> <fields> <field>first</field> <field>second</field> </fields> <where>name="Sergii"</where> <type>mysql</type> <str>`first` VARCHAR(255), `second` VARCHAR(255)</str> </receiver> </xml>
------WebKitFormBoundaryqchFM7hLgCJTF6aX
Content-Disposition: form-data; name="press"
 
OK
------WebKitFormBoundaryqchFM7hLgCJTF6aX--
[guest@localhost tmp]$ cat file.txt
<xml> <source> <ip>127.0.0.1</ip> <login>postgres</login> <pwd>634</pwd> <dbname>source</dbname> <table>users</table> <fields> <field>surname</field> <field>name</field> </fields> <where>1=1</where> <type>psql</type> </source> <receiver> <ip>127.0.0.1</ip> <login>root</login> <pwd>374</pwd> <dbname>test</dbname> <table>newtb</table> <fields> <field>first</field> <field>second</field> </fields> <where>name="Sergii"</where> <type>mysql</type> <str>`first` VARCHAR(255), `second` VARCHAR(255)</str> </receiver> </xml>
[guest@localhost tmp]$
1
Заблокирован
03.10.2012, 03:27
Цитата Сообщение от accept Посмотреть сообщение
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
[guest@localhost tmp]$ sed -n '/<xml>/p' >file.txt
------WebKitFormBoundaryqchFM7hLgCJTF6aX
Content-Disposition: form-data; name="upload"; filename="test.xml"
Content-Type: text/xml
 
<xml> <source> <ip>127.0.0.1</ip> <login>postgres</login> <pwd>634</pwd> <dbname>source</dbname> <table>users</table> <fields> <field>surname</field> <field>name</field> </fields> <where>1=1</where> <type>psql</type> </source> <receiver> <ip>127.0.0.1</ip> <login>root</login> <pwd>374</pwd> <dbname>test</dbname> <table>newtb</table> <fields> <field>first</field> <field>second</field> </fields> <where>name="Sergii"</where> <type>mysql</type> <str>`first` VARCHAR(255), `second` VARCHAR(255)</str> </receiver> </xml>
------WebKitFormBoundaryqchFM7hLgCJTF6aX
Content-Disposition: form-data; name="press"
 
OK
------WebKitFormBoundaryqchFM7hLgCJTF6aX--
[guest@localhost tmp]$ cat file.txt
<xml> <source> <ip>127.0.0.1</ip> <login>postgres</login> <pwd>634</pwd> <dbname>source</dbname> <table>users</table> <fields> <field>surname</field> <field>name</field> </fields> <where>1=1</where> <type>psql</type> </source> <receiver> <ip>127.0.0.1</ip> <login>root</login> <pwd>374</pwd> <dbname>test</dbname> <table>newtb</table> <fields> <field>first</field> <field>second</field> </fields> <where>name="Sergii"</where> <type>mysql</type> <str>`first` VARCHAR(255), `second` VARCHAR(255)</str> </receiver> </xml>
[guest@localhost tmp]$
Что это?
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.10.2012, 05:31
когда запускаешь sed, он принимает ввод из stdin, а вывод направляет в stdout
в данном случае stdout перенаправляется в file.txt
1
Заблокирован
03.10.2012, 11:35
Цитата Сообщение от accept Посмотреть сообщение
когда запускаешь sed, он принимает ввод из stdin, а вывод направляет в stdout
в данном случае stdout перенаправляется в file.txt
Это понятно. Ему нужно вырезать текст

Кликните здесь для просмотра всего текста
<xml> <source> <ip>127.0.0.1</ip> <login>postgres</login> <pwd>634</pwd> <dbname>source</dbname> <table>users</table> <fields> <field>surname</field> <field>name</field> </fields> <where>1=1</where> <type>psql</type> </source> <receiver> <ip>127.0.0.1</ip> <login>root</login> <pwd>374</pwd> <dbname>test</dbname> <table>newtb</table> <fields> <field>first</field> <field>second</field> </fields> <where>name="Sergii"</where> <type>mysql</type> <str>`first` VARCHAR(255), `second` VARCHAR(255)</str> </receiver> </xml>
1
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
03.10.2012, 11:53
fireridlle, грубый простой действенный вариант, если известно заранее количество верхних и нижних ненужных строк:
Bash
1
head имя_файла -n количество начальных_строк | tail -n количество_конечных строк
например:
Bash
1
2
3
4
5
6
7
8
9
#!/bin/bash
 
#~ удаляем из файла нижние строки, а потом верхние
 
_FILE=head_tail.txt #~ имя файла
 
head $_FILE -n 5 | tail -n 1 #~| tee $_FILE >/dev/null  #~ <- результат записать в файл
 
exit 0
где head_tail.txt - файл с приведенным выше содержимым
1
Заблокирован
03.10.2012, 12:36
Цитата Сообщение от remarkes Посмотреть сообщение
fireridlle, грубый простой действенный вариант, если известно заранее количество верхних и нижних ненужных строк:
Bash
1
head имя_файла -n количество начальных_строк | tail -n количество_конечных строк
например:
Bash
1
2
3
4
5
6
7
8
9
#!/bin/bash
 
#~ удаляем из файла нижние строки, а потом верхние
 
_FILE=head_tail.txt #~ имя файла
 
head $_FILE -n 5 | tail -n 1 #~| tee $_FILE >/dev/null  #~ <- результат записать в файл
 
exit 0
где head_tail.txt - файл с приведенным выше содержимым
ну если известно то да. а если не известно?
1
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
03.10.2012, 12:53
Цитата Сообщение от Vladislav45 Посмотреть сообщение
ну если известно то да. а если не известно?
вопрос стоял конкретный. не ищите себе сложностей, к тому же accept уже код написал. То есть это будет что-то типа:
Bash
1
cat $_FILE | sed -n '/<xml>/p' | tee $_FILE >/dev/null
вообще вариантов масса (это же bash!):
можно разложить файл на массив строк и удалять те строки, которые "не айс".
можно через sed, awk, grep и другие фильтры.
0
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462
03.10.2012, 13:48  [ТС]
да, тоже интересует если неизвестно количество строк. где то видел пример где чувак из текста вытаскивал напрмер с <table id="name"> до ближайшего закрывающего тега.
попробовал его под себя подогнать но не получилось
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
03.10.2012, 14:05
Цитата Сообщение от Vladislav45 Посмотреть сообщение
Это понятно. Ему нужно вырезать текст
ему нужно оставить этот текст, удалив всё остальное

Bash
1
sed -i -n '/<xml>/p' file.txt
если текст в файле (опция -i не входит в POSIX)
1
310 / 233 / 15
Регистрация: 01.07.2011
Сообщений: 812
Записей в блоге: 1
03.10.2012, 20:21
Цитата Сообщение от fireridlle Посмотреть сообщение
где то видел пример где чувак из текста вытаскивал напрмер с <table id="name"> до ближайшего закрывающего тега.
попробовал его под себя подогнать но не получилось
вот код, xml можно менять на необходимый тег
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
#!/bin/bash
 
#~ оставляем в файле от тега <xml> до </xml>
 
_FILE="head_tail.txt"   #~ имя файла
declare -a arr_file=( $(cat $_FILE) )   #~ считываем файл в массив
declare -i i=0    #~ счетчик строк
 
while [ "$(echo ${arr_file[$i]} | grep '<xml>')" == "" ]; do
    arr_file[$i]=""     #~ очищаем ненужные элементы
    (( i++ ))
done
 
echo -n > $_FILE    #~ обнуляем файл
 
while true; do
    echo ${arr_file[$i]}    #~ это чтобы просто посмотреть
    echo ${arr_file[$i]} >> $_FILE  #~ сохраняем строки в файл
    [ "$(echo ${arr_file[$i]} | grep '</xml>')" != "" ] && break
    (( i++ ))
done
 
#~ необязательная часть - это если дальше надо что-то обрабатывать
while (( i < ${#arr_file[@]} )); do
    arr_file[$i]=""
    (( i++ ))
done
exit 0
1
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
04.10.2012, 03:03
склеивать можно и sed'ом

Bash
1
2
3
4
5
6
7
8
9
10
11
12
sed -i -n '
 
/<xml>/ {
  :loop
  /<\/xml>/! {
    N
    b loop
  }
  p
}
 
' file.txt
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
[guest@localhost tmp]$ cat file.txt
 
<xml> a1
 
b1
 
c1
 
d1
</xml>
 
aaa
 
<xml> a2
 
b2
 
c2
 
d2
</xml>
 
bbb
 
<xml> a3 </xml>
 
ccc
 
<xml> a4 </xml>
 
ddd
 
[guest@localhost tmp]$ sed -i -n '
> 
> /<xml>/ {
>   :loop
>   /<\/xml>/! {
>     N
>     b loop
>   }
>   p
> }
> 
> ' file.txt
[guest@localhost tmp]$ cat file.txt
<xml> a1
 
b1
 
c1
 
d1
</xml>
<xml> a2
 
b2
 
c2
 
d2
</xml>
<xml> a3 </xml>
<xml> a4 </xml>
[guest@localhost tmp]$
почистить ещё надо слева и справа

Добавлено через 10 минут
Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
sed -i -n '
 
/<xml>/ {
  
  s,^.*<xml>,<xml>,
  
  :loop
  /<\/xml>/! {
    N
    b loop
  }
  
  s,</xml>.*$,</xml>,
  
  p
}
 
' file.txt
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
[guest@localhost tmp]$ cat file.txt
 
aaa
 
left1 <xml> a1
 
b1
 
c1
 
d1 </xml> right1
 
bbb
 
left2 <xml> a2
 
b2
 
c2
 
d2 </xml> right2
 
 
ccc
 
left3 <xml> a3 </xml> right3
 
ddd
 
left4 <xml> a4 </xml> right4
 
eee
 
[guest@localhost tmp]$ sed -i -n '
> 
> /<xml>/ {
>   
>   s,^.*<xml>,<xml>,
>   
>   :loop
>   /<\/xml>/! {
>     N
>     b loop
>   }
>   
>   s,</xml>.*$,</xml>,
>   
>   p
> }
> 
> ' file.txt
[guest@localhost tmp]$ cat file.txt
<xml> a1
 
b1
 
c1
 
d1 </xml>
<xml> a2
 
b2
 
c2
 
d2 </xml>
<xml> a3 </xml>
<xml> a4 </xml>
[guest@localhost tmp]$
0
75 / 75 / 13
Регистрация: 02.02.2012
Сообщений: 462
04.10.2012, 19:53  [ТС]
дошли руки до ноута где установлена виртуалка с линуксов.
попробовал два варианта, к сожалению ни тот ни второй не работают
Bash
1
2
_FILE=/tmp/bad.xml
head $_FILE -n 4 | tail -n 1 | tee $_FILE > /tmp/file.xml
Bash
1
2
_FILE=/tmp/bad.xml
cat $_FILE | sed -n '/<xml>/p' | tee $_FILE > /tmp/file.xml
Добавлено через 1 час 51 минуту
работает такой вариант

Bash
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
cat $_FILE | sed -i -n '
 
/<xml>/ {
  
  s,^.*<xml>,<xml>,
  
  :loop
  /<\/xml>/! {
    N
    b loop
  }
  
  s,</xml>.*$,</xml>,
  
  p
}
 
' /tmp/file.xml
честно говоря не понять регулярку.
accept если вам не сложно можете растолковать?
0
4866 / 3288 / 468
Регистрация: 10.12.2008
Сообщений: 10,570
05.10.2012, 03:41
Цитата Сообщение от fireridlle Посмотреть сообщение
работает такой вариант
там cat $_FILE не нужно, так как из-за опции -i sed берёт файл /tmp/file.xml и переделывает его

Добавлено через 14 минут
Цитата Сообщение от fireridlle Посмотреть сообщение
честно говоря не понять регулярку.
accept если вам не сложно можете растолковать?
/что/ - это поиск
s,что,на_что, - это замена (вместо запятой любой символ можно использовать)
:loop - это метка с названием loop (любое название может быть)
/что/! - это поиск с отрицанием
{команды} - группа команд (относится к выражению слева от неё)
N - присоединяет следующую строку потока (строка исчезает из потока)
b loop - переход на метку с названием loop
p - вывести текущее содержимое пространства шаблона

s,^.*<xml>,<xml>, - от начала строки искать все символы, которые заканчиваются на <xml>, и заменить это найденное только на <xml> (стереть всё перед открывающим <xml>)

s,</xml>.*$,</xml>, - начиная с </xml>, искать до конца строки все символы, и заменить это найденное только на </xml> (стереть всё после закрывающего </xml>)

Добавлено через 11 минут
1. пока в потоке есть строки:
1.1. присоединить строку к тексту
1.2. если в тексте найден открывающий тег, то:
1.2.1. удалить всё слева от открывающего тега
1.2.2. пока в тексте не найден закрывающий тег:
1.2.2.1. присоединить следующую строку из потока к тексту
1.2.3. удалить всё справа от закрывающего тега
1.2.4. вывести текст
1.3. удалить текст
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
05.10.2012, 03:41
Помогаю со студенческими работами здесь

Убрать лишний отступ
У меня два span и все они не одинаковы выравниваются а по разному. Второй span вышел вправо примерно на 10px Вот код на html ...

Убрать лишний метод из подкласса
Как поступают в таких случаях, когда, к примеру, есть класс Ключ, у него куча методов, один из которых Повернуть, класс ЭлектронныйКлюч...

Убрать лишний разрыв страницы
При работе с документом Word 2010 в Word 2013 перед таблицей возникает лишний разрыв страницы, который я никак не смог убрать. Смотрел...

Как убрать лишний контент
Столкнулся с такой проблемой. Утром все работало как надо, сейчас все полетело к чертям. Есть такое меню: &lt;nav&gt; &lt;a...

Убрать лишний цикл foreach
Есть такой скрипт : $link_val_scl=array();$i = 0; foreach($content-&gt;find('table a.scorelink') as $val_link){ $link_scl =...


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

Или воспользуйтесь поиском по форуму:
17
Ответ Создать тему
Новые блоги и статьи
Первый деплой
lagorue 16.01.2026
Не спеша развернул своё 1ое приложение в kubernetes. А дальше мне интересно создать 1фронтэнд приложения и 2 бэкэнд приложения развернуть 2 деплоя в кубере получится 2 сервиса и что-бы они. . .
Расчёт переходных процессов в цепи постоянного тока
igorrr37 16.01.2026
/ * Дана цепь постоянного тока с R, L, C, k(ключ), U, E, J. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа, решает её и находит токи на L и напряжения на C в установ. режимах до и. . .
Восстановить юзерскрипты Greasemonkey из бэкапа браузера
damix 15.01.2026
Если восстановить из бэкапа профиль Firefox после переустановки винды, то список юзерскриптов в Greasemonkey будет пустым. Но восстановить их можно так. Для этого понадобится консольная утилита. . .
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru