The UNIX and Linux Forums  
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.

Go Back   В UNIX и Linux Форумы > Топ форумы > Shell программирование и сценарии
.
Google unix.com



Shell программирование и сценарии Почтовые вопросы о KSH, CSH, SH, BASH, Perl, PHP, SED, AWK и скрипты оболочки и оболочки скриптовых языков здесь.

Подробнее UNIX и Linux Темы форума можно найти полезные
Нить Резьба для начинающих Форум Ответы Последнее сообщение
поиск полей в файле Pablo_beezo Shell программирование и сценарии 4 10-20-2008 10:52 AM
Поиск в String файла и возврата Имя файла bggibson UNIX для чайников Вопросы И Ответы 4 09-25-2008 05:45 AM
Как искать в двух областях Jisha Shell программирование и сценарии 3 04-23-2008 05:16 AM
поиск и замену различных областях tungaw2004 UNIX для чайников Вопросы И Ответы 3 03-29-2007 03:16 AM
Shell скрипт для возврата всех идентификаторов из файла основанных на распределении Код поиска kumbhatalok UNIX для чайников Вопросы И Ответы 1 10-06-2006 12:53 PM

Closed Thread
English Japanese Spanish French German Portuguese Italian Dutch Swedish Russian Norwegian Hungarian Hebrew Danish Bulgarian Greek Powered By Powered by Google
 
LinkBack Резьба Инструменты Искать в этом Thread Оценить Thread Режимы дисплея
Old 11-17-2008
da2357 da2357 is offline
Зарегистрированный пользователь
  
 

Регистрация: Nov 2008
Сообщений: 3
Поиск плоский файл и возвратить 3 областях

Мне нужно иметь возможность поиска квартиры файл (Comma-Separated Values) для конкретного значения, а затем вернуться следующие 2 поля в переменных. Вот пример плоского файла:

С.Н., счета, Ipaddress
W120394YF, Адам, 10.0.20.2
W394830PR, Бетти, 10.0.20.3
W847582TD, Чарли, 10.0.20.4
W749509AY, Донна, 10.0.20.5

У меня уже есть BASH код, который извлекает компьютера, серийный номер и сохраняет его в SERIALNUM. Я хочу искать файл с этой SERIALNUM и вернуться следующие 2 поля в АКТС и IPADD. Предложения?
Old 11-17-2008
in2nix4life's Avatar
in2nix4life in2nix4life is offline
Зарегистрированный пользователь
  
 

Регистрация: Oct 2007
Расположение: Восточное побережье
Сообщений: 58
Использование AWK, как это может помочь вам точку в правильном направлении:

serialnum \u003d `AWK-F", " '/ W394830PR / (печать $ 1)' файл`
счет \u003d `AWK-F", " '/ W394830PR / (печать $ 2)' файл`
Ipaddress \u003d `AWK-F", " '/ W394830PR / (печати $ 3)' файл`
Old 11-18-2008
Кристоф Spohr Christoph Spohr is offline
Зарегистрированный пользователь
  
 

Регистрация: Sep 2008
Сообщений: 205
Привет,

Я предлагаю сначала читать весь файл в три массива, один для серийного, по одному для пользователя и для ipadd.

Код:
declare -a SERIAL ACCT IPADD 
let count=0 
while IFS=, read a b c 
do 
    SERIAL[$count]=$a; ACCT[$count]=$b; IPADD[$count]=$c; ((count++)) 
done < file
Это устанавливает внутренние области разделитель "," и читает три запятая отдельных областях, в трех переменных, которые вынуждены жить в объявленных массивов.

Теперь Вы можете найти этот массив следующим образом:

Код:
let i=0 
while [[ $i -lt ${#SERIAL[@]} ]] 
do 
  [[ ${SERIAL[${i}]} = W120* ]] && printf "%s %s\n" ${ACCT[${i}]} ${IPADD[${i}]} 
  ((i++)) 
done
Это петли через массив. $ (# СЕРИЙНЫМ [@]) дает вам количество элементов массива. Если определенный СЕРИЙНЫМ найден, то соответствующие данные выводятся.

HTH Крис
Old 11-18-2008
da2357 da2357 is offline
Зарегистрированный пользователь
  
 

Регистрация: Nov 2008
Сообщений: 3
Цитата:
Первоначально Послано in2nix4life View Post
Использование AWK, как это может помочь вам точку в правильном направлении:

serialnum \u003d `AWK-F", " '/ W394830PR / (печать $ 1)' файл`
счет \u003d `AWK-F", " '/ W394830PR / (печать $ 2)' файл`
Ipaddress \u003d `AWK-F", " '/ W394830PR / (печати $ 3)' файл`
Великий (и спасибо), то меня там 99%. Вот фрагмент из того, что я, используя свою идею:

Код:
#!/bin/bash
USERLIST="/Users/johndoe/.bin/xBackup_users"
SRCHFOR="W8735UL8Z5V"
#
USERNAME=`awk -F "," '/W8735UL8Z5V/{print $2}' $USERLIST`
PASSWORD=`awk -F "," '/W8735UL8Z5V/{print $3}' $USERLIST`
RSYNCIP=`awk -F "," '/W8735UL8Z5V/{print $4}' $USERLIST`
#
clear
echo
echo Your account name is $USERNAME
echo Your password is $PASSWORD
echo Your IP address is $RSYNCIP
echo
exit
Чтобы закончить это, я лучше использовать переменную SRCHFOR в AWK команда, и я попытался это несколькими способами, но не знаете, как получить его на работу. (Я уже отдельный код, который извлекает серийный номер машины.)

Любые окончательные идеи?
Old 11-18-2008
joeyg's Avatar
joeyg joeyg is offline Forum Staff  
modérateur
  
 

Регистрация: Декабрь 2007
Место проведения: Дом 17-чемпион мира Бостон Celtics
Сообщений: 1311
Wink

Взгляните на предыдущих предложения (от yongitz):
Цитата:
AWK-F "," V-Pat \u003d $ SERIALNUM '$ 0 ~ Pat печати ($ 2, $ 3)' your_flat_file.txt
Вы должны указать переменную для использования в AWK, как сделано выше. В-V говорит установить переменную, а также является одним назначен Пэт, и она равна $ SERIALNUM. Вы должны сделать то же самое для ваших SRCHFOR переменной. Затем вы могли бы использовать патент (или любой другой переменной имя присвоить) в AWK сделать ваши соответствия.
Old 11-18-2008
da2357 da2357 is offline
Зарегистрированный пользователь
  
 

Регистрация: Nov 2008
Сообщений: 3
Цитата:
Первоначально Послано da2357
Любые окончательные идеи?
Эврика, я нашел его!

Код:
#!/bin/bash
USERLIST="/Users/johndoe/.bin/xBackup_users"
SRCHFOR="W8735UL8Z5V"
#
USERNAME=`awk -F "," '/^'"$SRCHFOR"'/ {print $2}' $USERLIST`
PASSWORD=`awk -F "," '/^'"$SRCHFOR"'/ {print $3}' $USERLIST`
RSYNCIP=`awk -F "," '/^'"$SRCHFOR"'/ {print $4}' $USERLIST`
#
clear
echo
echo Your account name is $USERNAME
echo Your password is $PASSWORD
echo Your IP address is $RSYNCIP
echo
exit
Спасибо всем за ваши идеи.
Old 11-18-2008
yongitz yongitz is offline
Зарегистрированный пользователь
  
 

Регистрация: Apr 2008
Место проведения: Филиппины
Сообщений: 68
Код:
awk -F"," -v pat=$SERIALNUM '$0 ~ pat {print $2,$3}' your_flat_file.txt
Это предполагает, что вы получили только один серийный номер, хранится в SERIALNUM переменной.
Closed Thread

Закладки

Резьба Инструменты Искать в этом Thread
Искать в этом Thread:

Расширенный поиск
Режимы дисплея Оценить эту ветку
Оценить эту ветку:

Отправка Правила
Вы не может Начать новую нитей
Вы не может Почтовые ответы
Вы не может Почтовые вложения
Вы не может Редактировать Ваши сообщения

BB код быть На
Смайлики являемся На
[IMG] код На
HTML-код Вне
Trackbacks являемся На
Pingbacks являемся На
Refbacks являемся На




Часовой пояс GMT -4. Текущее время 09:55 PM.


Powered By: Справка, Copyright © 2000 - 2006, Jelsoft Enterprises Limited. Язык Переводы на питание от .
vBCredits v1.4 Copyright © 2007 - 2008, PixelFX Studios
В UNIX и Linux форумы Содержание Copyright © 1993-2009. Все права Reserved.Ad управления по RedTyger

Содержание соответствующие URL-адреса в vBSEO 3.2.0