Portál AbcLinuxu, 12. května 2025 07:11
Ahoj. Zdravím zdejší komunitu. Měl bych někoho z Vás prosbu. Nenašel by se zde někdo tak laskavý a nanapsal mi skript či malý program např. v c, který by plnil následující funkci? Mám *.txt soubory a potřebuju z nich vycucnout vždy určité číselné údaje. Soubory jsou výstupem z iwconfigu a obsahuji položky jako signal level, link quality, tx power apod. Potřebuji z toho pak udělat tabulky v Excelu, takže by bylo dobré, kdyby ten program ty hodnoty nějak rozumně oddělil středníkama a vytvořil se csv soubor, který už Excel umí načíst.. OS mám Ubuntu 9.10. Předem moc děkuji za Váš čas.
Řešení dotazu:
while (true)
do
iwlist wlan0 scan |grep Quality >> vystup.csv
sleep 10
done
A potom importnúť výstup.csv s tým, že oddeľovač je medzera.
Ak chytíš viac ako jednu sieť, tak sa treba pohrať s grep-om:
iwlist wlan0 scan |grep -A 'ESSID:"mojasiet"' |grep Quality
alebo tak nejak.
#! /usr/bin/env python # -*- coding: utf-8 -*- import re import sys # Link Quality=75/100 Signal level=-59 dBm Noise level=-127 dBm # Bit Rate=54 Mb/s Tx-Power=27 dBm PATTERNS = [ re.compile(r"""Link Quality=([0-9]+)/([0-9]+)\s+Signal level=(-[0-9]+) dBm\s+Noise level=(-[0-9]+) dBm"""), re.compile(r"""Bit Rate=([0-9]+) Mb/s\s+Tx-Power=([0-9]+) dBm"""), ] while (True): line = sys.stdin.readline() if (not line): break for pattern in PATTERNS: m = pattern.match(line.strip()) if (not m): continue for group in m.groups(): sys.stdout.write("%s;" % group) sys.stdout.write("\n")
Použití:
$ chmod +x parse.py $ ./parse.py <input.txt 75;100;-59;-127; 54;27; 75;100;-59;-127; 54;27; 75;100;-59;-127;
grep
na nějaký výraz ze zpracovávaných řádků. Proto, že ti pak pro další zpracování vzniknou podčásti s jiným počtem sloupců.
2) Nahradil bych rovnítka mezerou pomocí tr
.
3) Vytáhnul bych relevantní sloupce pomocí awk
.Oddělovač (středník) bych asi nacpal rovnou do příkazu pro awk.
4) Jestli to chceš v jednom souboru, tak si pak výsledky spoj pomocí paste
.
perl -e 'open FH,"155530-pujde-14396.txt"; while(<FH>) {$f.=$_}; while($f=~/=(\S+\s{0,1}\S*)[^=]+=(\S+\s{0,1}\S*)[^=]+=(\S+\s{0,1}\S*)[^=]+=(\S+\s{0,1}\S*)[^=]+=(\S+\s{0,1}\S*)/sg) {print join(";",$1,$2,$3,$4,$5)."\n"}; close FH;' > vystup.csv
54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;72/100 ;-62 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;72/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;72/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;72/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;76/100 ;-58 dBm;-127 dBm 54 Mb/s;27 dBm;76/100 ;-58 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;72/100 ;-62 dBm;-127 dBm 54 Mb/s;27 dBm;72/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;73/100 ;-61 dBm;-127 dBm 54 Mb/s;27 dBm;74/100 ;-60 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm 54 Mb/s;27 dBm;75/100 ;-59 dBm;-127 dBm
perl -e 'open F,"155530-pujde-14396.txt"; while(<F>) {$f.=$_}; while($f=~/=(-?\d+)[^=]+=(-?\d+)[^=]+=(-?\d+)[^=]+=(-?\d+)[^=]+=(-?\d+)/sg) {print join(";",$1,$2,$3,$4,$5)."\n"}; close F;' > vystup.csva vystup vyzera:
54;27;74;-60;-127 54;27;75;-59;-127 54;27;75;-59;-127 54;27;74;-59;-127 54;27;75;-59;-127 ...
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.