Em python
Em um forro de um (longo):
python3 -c 'data = [l.split("_") for l in open("f").read().splitlines()]; [print("service_id: "+d[0]+",", "mac_address: "+d[1]) for d in data]'
em que 'f' é o arquivo de origem, entre aspas (duplas).
Saída:
service_id: TBBN027162G mac_adrres: 38d8-2f08-0c40
service_id: TBBN027605G mac_adrres: 38d8-2f08-1518
service_id: TBBN027941G mac_adrres: 38d8-2f08-0d1c
service_id: TBBN027923G mac_adrres: 38d8-2f08-35e4
Escrito em um scriptfile:
#!/usr/bin/env python3
import sys
f = sys.argv[1]
data = [l.split("_") for l in open(f).read().splitlines()]
for d in data:
print("service_id: "+d[0]+",", "mac_address: "+d[1])
- Se você preferir a versão do script, copie-a em um arquivo vazio, salve-a como
extract_data.py
, execute-a com o arquivo como um argumento:
python3 /path/to/extract_data.py /path/to/sourcefile
Em detalhes, "zoom out":
open(f).read().splitlines()
lê o arquivo, divide-o em linhas
[l.split("_") for l in open(f).read().splitlines()]
cria uma lista dessas linhas, dividida em duas seções pelo delimitador _
for d in data:
print("service_id: "+d[0]+",", "mac_address: "+d[1])
finalmente combina as duas seções por linha com as strings:
service_id:
e
mac_address:
EDITAR
Lendo vários arquivos (todos) em um diretório de uma só vez, precisamos de mais duas linhas no script:
#!/usr/bin/env python3
import sys
import os
dr = sys.argv[1]
# list the directory's files, exclude hidden and backup files:
flist = [dr+"/"+f for f in os.listdir(dr) if not any([f.startswith("."), f.endswith("~")])]
# split the lines into sections:
data = sum([[l.split("_") for l in open(f).read().splitlines()] for f in flist], [])
# generate the print command per (split) line, combine it with the naming strings:
[print("service_id: "+d[0]+",", "mac_adrres: "+d[1]) for d in data]
Embora o script ignore arquivos e arquivos ocultos, terminando com ~
, ele supõe que o diretório contém apenas arquivos legíveis e válidos.
Use-o exatamente como o primeiro script, mas agora apenas com o diretório como argumento:
python3 /path/to/extract_data.py /path/to/source_directory
Exemplo de saída:
service_id: TBBN027162A, mac_adrres: 38d8-2f08-0c21
service_id: TBBN027605A, mac_adrres: 38d8-2f08-1534
service_id: TBBN027941A, mac_adrres: 38d8-2f08-0d8v
service_id: TBBN027923A, mac_adrres: 38d8-2f08-35e4
service_id: TBBN027162G, mac_adrres: 38d8-2f08-0c40
service_id: TBBN027605G, mac_adrres: 38d8-2f08-1518
service_id: TBBN027941G, mac_adrres: 38d8-2f08-0d1c
service_id: TBBN027923G, mac_adrres: 38d8-2f08-35e4