Как я могу получить эту строку из текстового файла - PullRequest
0 голосов
/ 12 марта 2012

Я могу прочитать этот текстовый файл формата (например, id.txt):

 - 1BCF-2982 -- Installing Driver
 - 1BCF-2982 -- Driver Installed
 - (Testing Wireless 5630 (EVDO-HSPA) Mobile Broadband Mini-Card)
 - Executing Test -- MEID hex value
 - Extended test data -- MEID:0xA1000013B8F66E
 - Executing Test -- IMEI decimal value
 - Extended test data -- IMEI:355023040845227
 - Executing Test -- ICCID decimal value
 - (Wireless 5630 (EVDO-HSPA) Mobile Broadband Mini-Card Test Results)

или ниже формат файла id.txt

 - 1BCF-2982 -- Installing Driver
 - 1BCF-2982 -- Driver Installed
 - (Testing Wireless 5630 (EVDO-HSPA) Mobile Broadband Mini-Card)
 - Extended test data -- MEID:0xA1000013B8F66E
 - Extended test data -- IMEI:355023040845227
 - (Wireless 5630 (EVDO-HSPA) Mobile Broadband Mini-Card Test Results)

это мой путь, сборка meid.sed и imei.sed

/MEID/{
s/^.*:0x([-0-9a-zA-Z]+)/set meid=\1/p;
}

и imei.sed

/IMEI/{
s/^.*:([-0-9a-zA-Z]+)/set imei=\1/p;
}

Не могли бы вы сказать мне простой способ, вывод будет выглядеть так:

set meid=A1000013B8F66E
set imei=355023040845227

спасибо!

Ответы [ 3 ]

3 голосов
/ 12 марта 2012
$ sed -nr '/.*(MEID|IMEI):(0x)?([0-9A-F]+)/s//set \L\1\E=\3/p' id.txt
set meid=A1000013B8F66E
set imei=355023040845227
2 голосов
/ 12 марта 2012

грязный и быстрый awk oneliner работает с вашими примерами:

awk -F' -- |:' 'NF>2{print "set "tolower($2)"="$3}' yourFile

тест с примером 1:

kent$  echo "- 1BCF-2982 -- Installing Driver
 - 1BCF-2982 -- Driver Installed
 - (Testing Wireless 5630 (EVDO-HSPA) Mobile Broadband Mini-Card)
 - Extended test data -- MEID:0xA1000013B8F66E
 - Extended test data -- IMEI:355023040845227
 - (Wireless 5630 (EVDO-HSPA) Mobile Broadband Mini-Card Test Results)
"|awk -F' -- |:' 'NF>2{print "set "tolower($2)"="$3}'
set meid=0xA1000013B8F66E
set imei=355023040845227
0 голосов
/ 12 марта 2012

Вы можете достичь того же с помощью этой команды

cat <your input file> | grep -E "MEID:|IMEI:" | awk '{print $NF;}' | tr ':' '=' | awk '{print "set " $0;}'

Либо вы можете запустить его из команды prmpt, либо поместить его в файл .sh и запустить его

...