Модераторы: powerfox, ZeeLax
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Прошу помощи 
:(
    Опции темы
Testernew
Дата 15.1.2014, 18:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Есть файл some.txt с блоками текста которые разделены пробелами

Пример:

Цитата

111111test
1111value
1111111111
1111111111

222222test
2222222222
22222value
2222222222

222222test
2222222222
2222222222
2222222222


Задача: Если в блоке(блок: от пустой строки до пустой строки) текста есть подстрока 'value' то найти и считать значение test которое находиться в первой строке и записать его в файл res.txt и.т.д для всех блоков в файле.
PM   Вверх
Romikgy
Дата 15.1.2014, 23:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Любитель-программер
****


Профиль
Группа: Участник Клуба
Сообщений: 7326
Регистрация: 11.5.2005
Где: Porto Franco Odes sa

Репутация: нет
Всего: 146



на любом скриптовом(аля перл или питон) языке написать парсер для сего...


--------------------
Владение русской орфографией это как владение кунг-фу — истинные мастера не применяют его без надобности. 
smile

PM   Вверх
beroal
Дата 16.1.2014, 10:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 212
Регистрация: 18.1.2003
Где: Украина

Репутация: нет
Всего: 3



Да и на Си будет не трудно написать.
PM WWW   Вверх
tzirechnoy
Дата 16.1.2014, 14:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Код
awk -v FS='\n' -v RS='\n\n' ' /value/ { print $1 }' <infile.txt >outfile.txt

PM MAIL   Вверх
Testernew
Дата 19.1.2014, 13:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Цитата(tzirechnoy @ 16.1.2014,  14:49)
Код
awk -v FS='\n' -v RS='\n\n' ' /value/ { print $1 }' <infile.txt >outfile.txt

Большое спасибо!!!
Подскажите как тут лучше сделать.


Задача, взять строку из файла result.txt найти ее в файле base.txt и записать данные которые расположены после ";" (после ; могут быть как буквы так и цифры разного регистра) из этой строки в файл finish.txt
Вот как я пробую это сделать. но что то не разобрался с циклам for в bash.
Файл result.txt содержит ip адреса.


Пример Файла:
Код

1.1.1.1
22.22.22.22
196.196.196.196


Файл base.txt содержит записи вида:

Пример файла:
Код

11.11.11.11;TeSt_Some2_inFo
99.12.122.129;Some2_inFo55


Код

#!/bin/bash

result=`cat result.txt`
base='cat base.txt'
for i in $result; do
 for j in $base; do
   if  [ echo $j | grep -v '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' == $i ];
       echo $j | grep -v '[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}' >> finish.txt
 done
done


Это сообщение отредактировал(а) Testernew - 19.1.2014, 13:43
PM   Вверх
tzirechnoy
Дата 19.1.2014, 19:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1173
Регистрация: 30.1.2009

Репутация: 2
Всего: 16



Чтобы в bash проще разбираться -- у него есть set -x

Но вообще -- в base=... кавычки неправильные (нужны апострофы).

Что Вы хотели сделать grepом -- я так и не понял, но в любом случае ничего полезного он у вас делать не будет. Прочитайте man, и попробуйте этот вид grep отдельно, чтобы понять, что он делает.

Да, а как лучшэ -- зависит от многих мелочей. Например, от соотношэния размеров файлов base и result, от того, простая ли структура в base -- или там можэт быть правильный csv, от того, достаточно ли сравнивать строки или надо именно как ip-адреса (у которых можэт быть разное текстовое представление по разным причинам).
PM MAIL   Вверх
Testernew
Дата 26.1.2014, 14:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 96
Регистрация: 12.2.2012
Где: Луганск

Репутация: нет
Всего: нет



Цитата

Что Вы хотели сделать grepом -- я так и не понял, но в любом случае ничего полезного он у вас делать не будет.


Хотел сравнить содержимое строки исключив из нее ip адрес.

Вот Как я решил эту задачу(может кому то поможет) возможно не самый оптимальный и быстрый вариант, но работает.

Код

cat result.txt | while read line; do
   cat base.txt | while read line2; do
     if [ $line = `echo $line2 | cut -d ";" -f1` ]; then
       echo $line2 | cut -d ";" -f2 > finish.txt
       break
      fi
   done
done


Это сообщение отредактировал(а) Testernew - 26.1.2014, 14:17
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Linux/UNIX: Oбщие вопросы"
nickless
Imple
nerezus

В тему здесь вопросы общие - не привязанные к определенному ПО или дистрибутиву BSD/Linux/UNIX.
Например вопросы о выборе ОС для определенных задач (но если Вы просто хотите узнать "Какой дистрибутив лучше", то для этого есть Клуб юнуксоидов).
Общие вопросы по shell-программированию тоже лучше задавать здесь.


  • Вопросы мобильной разработки тут
  • Вы должны соблюдать правила форума.
  • Помните: какой вопрос, такой и ответ. Прежде чем задать вопрос прочитайте вот эту статью на форуме CIT.
  • Оскорблять запрещается.
  • Религиозные войны в Религиозных войнах.
  • Общение "просто так" в Клубе юнуксоидов. В отличие от многих других разделов, здесь разрешается сдержанно оффтопить и юморить в тему.

За интересные статьи, находки, решения, программы и просто реальную помощь будут ставиться + в репу).


В данный момент этот раздел модерируют nerezus, nickless, powerfox, pythonwin, Imple и ZeeLax. Если вы хотите помочь нам, пишите в ПМ и мы обсудим.


Спасибо. И use UNIX or die; С уважением, nerezus, nickless, powerfox, pythonwin, Imple, ZeeLax.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | *NIX системы: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0619 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.