Может быть, у кого-то есть идея для сценария perl с очень сильным нерегулярным выражением, которое соответствует только строкам с уникальным правилом ([param_name] [separator] [any_value])
Правила, описанные в ПРИМЕРЕ 1 и ПРИМЕРЕ 2
Цель сценария - сопоставить допустимые строки, описанные ниже (ПРИМЕР 1 - допустимые строки и игнорировать недопустимые строки, описанные в ПРИМЕРЕ 2 - недопустимые строки)
Я буду рад, если у кого-нибудь есть блестящий код, который соответствует действительным строкам из файла и
выведите действительные строки в /tmp/Valid.txt
И выведите недопустимую строку в /tmp/nonvalid.txt
Пример запуска скрипта
./find_valid_lines.pl file
Определение:
Допустимый синтаксис строки:
[Parameter_name] [separator] [Value]
, где:
Parameter_name:
любая строка. но не номер. или строка, начинающаяся с номера / s
separator:
- это символ "=" (только один разделитель в каждой строке)
Value:
любая строка, число или символ, включая исключительные символы
как $ * & (_ {['"? <~! и т. д. </li>
Но если строка имеет символ ;
, сценарий должен занимать строку до ;
, только если строка перед ;
является допустимой строкой.
Например:
MY__param = 100 ; 1000
Тогда
MY__param = 100
- Примечание: скрипт будет игнорировать строку, если в начале строки есть символ "#"
Примеры строк в файлах (допустимые строки - example1 и недопустимые строки - example2)
ПРИМЕР 1: Действительные строки (Действительный параметр & Действительный разделитель и Действительное значение)
parameter=1
parameter.1=1 2 3
MY_Name.2= A B C
parameter =1 * * $ @
Home_NAME =MOON
param1=1 2 3 + * *
Param_A = 73826.32863
PARAM_STAR = 23.84 (2.d) 12 & {0} (8) 100%
Param120A = ~1.33454656
@param =90%
P1= -39546
My_param=#
My_P = # #123
MY_Parameter = <34> 2 3 4 5 6 7 8 9 A "ededefec" $100
uniq_param=?
T = 0
GH.@=%
PORT_NUM= 123 / 98775 / 554 / 34545 / 54
ADDRESS = 172.19.0.1
FolderHome = /dir746/dir87/file1 , /dir746/dir87/file2
switch_from_LAN*=100G_SPEED
ПРИМЕР 2: Недействительные строки (недопустимый параметр ИЛИ недопустимый разделитель ИЛИ недопустимое значение)
PARAM== 100
Param = 276 =
276 = 2652
= 234
Name =
PARAMETER = ;
Param_is_file 123
port 19463
David_name
243546
=
635A
10Param
*&^
= &^#$>:
A 123
65MY_PARAM_NAME=10
all_strings=; 75845
switch_from_LAN*=