![]() |
Здравствуйте и добро от Соединенных Штатов UNIX и Linux Форумы! Благодарим Вас за посещение и вступления нашей мирового сообщества.
|
|
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 |
![]() |
|
|
LinkBack | Резьба Инструменты | Искать в этом Thread | Оценить Thread | Режимы дисплея |
|
|
|
||||
|
Поиск плоский файл и возвратить 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. Предложения? |
|
||||
|
Привет,
Я предлагаю сначала читать весь файл в три массива, один для серийного, по одному для пользователя и для 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 Крис |
|
||||
|
Цитата:
Код:
#!/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
Любые окончательные идеи? |
|
|||||
|
Взгляните на предыдущих предложения (от yongitz):
Цитата:
|
|
||||
|
Цитата:
Код:
#!/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
|
|
||||
|
Код:
awk -F"," -v pat=$SERIALNUM '$0 ~ pat {print $2,$3}' your_flat_file.txt
|
![]() |
| Закладки |
| Резьба Инструменты | Искать в этом Thread |
| Режимы дисплея | Оценить эту ветку |
|
|