Я использую сценарий bash с AT-командой AT + COPS =? который возвращает следующую строку:
+COPS: (1,"Orange F","Orange","20801",2),(1,"Swisscom","Swisscom","22801",7),(1,"Swisscom","Swisscom","22801",2),(1,"Salt","Salt","22803",2),(1,"Sunrise","Sunrise","22802",2),(1,"Sunrise","Sunrise","22802",7),(1,"Sunrise","Sunrise","22802",0),(2,"Salt","Salt","22803",7),(1,"Free","Free","20815",2),(1,"F SFR","SFR","20810",7),(1,"F-Bouygues Telecom","BYTEL","20820",7),,(0-4),(0-2)
И я пытаюсь найти регулярное выражение, соответствующее каждому короткому альфанумерим c именам операторов. Так вот, это:
Orange Swisscom Swisscom Salt Sunrise Sunrise Sunrise Salt Free SFR BYTEL
Например, в группе
(1,"F-Bouygues Telecom","BYTEL","20820",7)
Интересна часть 'BYTEL'. 'BYTEL' также может состоять из строчных букв и чисел.
Я пробовал несколько решений, но они не совпадают на 100%. На данный момент я использую:
grep -oP '"([a-zA-z])\w+"'
, но он не будет работать в некоторых особых случаях и соответствует также длинным именам операторов alphanumeri c (имя между кавычками).