Я пытаюсь найти способ разобрать файл в Rexx. Каждая строка состоит из двух слов и IP-адреса.
Пример
Имя местоположения 10.0.0.1
Я просмотрел много документации и могу заставить ее распечатать все строки в файле, но я не могу понять, как искать весь файл и печатать определенную строку с помощью оператора сопоставления.
Rexx, разобрать файл на одну строку
comment
Какую версию Rexx вы используете ZOs, Regina и т. д. Какой матч вы пытаетесь сделать ??.
- person Bruce Martin   schedule 12.02.2015
comment
Я не совсем уверен, в какой версии это, Rexx Scripting через программу под названием ZOC, emtec.com /zoc/documents.html. В их справке по документации говорится, что Regina Rexx Version 3.4 не уверен, поможет ли это. В основном я хочу запустить совпадение в первом столбце и, если возможно, вернуть все 3 значения в строке соответствия в качестве переменных.
- person GenericUser   schedule 13.02.2015
Ответы (3)
Для Regina Rexx эта программа должна быть близка к тому, что вы хотите:
Call A000_init
Call R000_ReadFile
do while MoreData
parse var line pt1 pt2
if (pt1 == whatever) then do
/* Do some thing */
end
Call R000_ReadFile
end
A000_init:
Yes = 1
No = 0
MoreData = yes
filename = .....
return
R000_ReadFile:
if lines(filename,'N') then do
Line= LineIn(filename)
end; else do
line = ''
MoreData = no
end
Return
person
Bruce Martin
schedule
13.02.2015
Это довольно простая задача для программы Rexx.
ExpectedLocation = 'Living Room' /* What location are we searching for? */
Signal on NotReady /* Jump to "NotReady:" at end-of-file. */
Do Forever /* ... or at least until EOF or Exit! */
Parse LineIn Word1 Word2 IPAddress . /* Pull apart the three tokens on the line */
Location = Word1 Word2 /* Put the two words of the location back together. */
If Location = ExpectedLocation then Do /* Did we find it? */
Say "Found it :-)" /* Yay! */
Exit /* We're done, stop the program. */
End
End
NotReady: /* We come here at end-of-file. */
Say "Didn't find it :-(" /* Darn! */
Регина с открытым исходным кодом, проект находится на SourceForge по адресу http://regina-rexx.sourceforge.net, а документацию для используемой версии можно загрузить с http://sourceforge.net/projects/regina-rexx/files/regina-documentation/3.4/
person
Ross Patterson
schedule
13.02.2015
Похоже, что мне нужно, но как определить, на какой файл смотреть?
- person GenericUser; 14.02.2015
Как написано, это будет считываться из стандартного потока ввода (как и любая другая программа консольного режима). Но вы можете заменить
Parse LineIn ...whatever...
на InputLine = LineIn("whatever_file.txt")
и Parse var InputLine with ...whatever...
, и вместо этого он будет читать what_file.txt.
- person Ross Patterson; 14.02.2015
Входной файл: XXXXXX.XXXX.XXXX
***************************** Top of Data
Location1 Name1 11.11.11.11
Location2 Name2 22.22.22.22
Location3 Name3 33.33.33.33
**************************** Bottom of Data
Код:
/* REXX */
/* Author : Ebin Paulose */
/*=============================================================================*/
YourWord = Location2 /*Word which we need to find, here i m giving "Location2"*/
Your_PS = 'XXXXXX.XXXX.XXXX' /*File name where we need to search */
"ALLOC DA('"Your_PS"') F(FILEDD) SHR REUSE" /* Allocate the file */
DO FOREVER
"EXECIO 1 DISKR FILEDD"
IF RC>0 THEN LEAVE
PULL Record /* pull one record from file */
PARSE VAR Record Location " " Name " " IPAddress
/* parse record into 3 parts Location, Name and IPAddress */
IF Location = YourWord THEN do /* check for matching */
SAY 'Found : ' Location
Found = 'Y'
END
END
IF Found ¬= 'Y' THEN DO
SAY 'Sorry Search item Not found'
END
"EXECIO 0 DISKR FILEDD (FINIS"
"FREE F(FILEDD)"
Выход 1 (предмет найден) : Найдено : LOCATION2
Выход 2 (элемент не найден) : Извините, элемент поиска не найден
person
E P
schedule
11.03.2015