[Risolto] output grep non a capo

Linguaggi di programmazione: php, perl, python, C, bash e tutti gli altri.
Avatar utente
ndrini
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 493
Iscrizione: domenica 6 settembre 2009, 22:25
Contatti:

[Risolto] output grep non a capo

Messaggio da ndrini »

Ciao, vorrei tenere conto della velocitá delle reti hotspot wifi a chi mi collego.
Con speedtest-cli mi trovo bene.

Codice: Seleziona tutto

ndr:~$ echo "$(date +"%d/%m/%Y %H:%M:%S" ) --> $(speedtest-cli |grep 'Testing from\|Download\|Upload') "  
11/08/2017 13:00:11 --> Testing from Orange (85.53.92.245)...
Download: 140.03 Mbit/s
Upload: 82.93 Mbit/s 
ndr:~$ echo "$(date +"%d/%m/%Y %H:%M:%S" ) --> $(speedtest-cli |grep 'Testing from|Download|Upload') "  
11/08/2017 13:01:32 --> 
Solo non so come utilizzare grep affinché l'output stia su una sola riga.

Pare che non si possa, ma usando tr si dobrebbe riuscire:
ndr:~$ echo "$(date +"%d/%m/%Y %H:%M:%S" ) --> $(speedtest-cli |grep 'Testing from|Download|Upload')" | tr '\n' ' '
:birra:

ma toglie anche l'ultimo

Codice: Seleziona tutto

ndr:~$ echo "$(date +"%d/%m/%Y %H:%M:%S" ) --> $(speedtest-cli |grep 'Testing from\|Download\|Upload') "  | tr '\n' ';'
11/08/2017 13:39:24 --> Testing from Orange (85.53.92.245)...;Download: 136.75 Mbit/s;Upload: 78.34 Mbit/s ;ndr:~$ 
Ciao.
Andrea
Ultima modifica di ndrini il venerdì 11 agosto 2017, 16:24, modificato 1 volta in totale.
Avatar utente
ndrini
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 493
Iscrizione: domenica 6 settembre 2009, 22:25
Contatti:

Re: output grep non a capo

Messaggio da ndrini »

Ok, "me la canto e me la suono" da solo.

La cosa era che non riuscivo ad applicare il comando tr senza l'uso del pipe |.

Mi spiego meglio, pensavo di risolvere spezzettando il problema in passaggi:
  • A = misurazione
  • tr A : cosí da togliere gli "a capo"
  • echo $A >> nome_file.txt
Ma tr A io non lo so fare, so fare solo A | tr.


Poi ho notato che se voglio fare echo "testo" si fa così, ma se voglio fare echo "risultato di una funzione" si fa echo "$( funzione ) "

quindi così ho fatto:

Codice: Seleziona tutto

 echo "$( echo  "$(date +"%d/%m/%Y %H:%M:%S" ) --> $(speedtest-cli |grep 'Testing from\|Download\|Upload') "  | tr '\n' ';'       )
 
e per salvare in un file esterno:

Codice: Seleziona tutto

 echo "$( echo  "$(date +"%d/%m/%Y %H:%M:%S" ) --> $(speedtest-cli |grep 'Testing from\|Download\|Upload') "  | tr '\n' ';'       )"  >> nome_file.txt
 

La struttura

Codice: Seleziona tutto

 echo "$(      echo  "$( ... ) "  | tr  ...  )"  >> nome_file.txt  

non sará elegante, ma funziona :-)

Andrea
Avatar utente
UbuNuovo
Imperturbabile Insigne
Imperturbabile Insigne
Messaggi: 4433
Iscrizione: sabato 12 dicembre 2009, 20:58
Desktop: Mate
Distribuzione: Ubuntu Mate 22.04.1 LTS
Sesso: Maschile
Contatti:

Re: [Risolto] output grep non a capo

Messaggio da UbuNuovo »

Non c'è bisogno di 'tr'.
Per non far andar a capo il testo su più righe, basta non usare gli apici.
per esempio, io farei così
(per migliore comprensibilità del codice e flessibilità, metterei i dati acquisiti su due variabili e poi rimonterei la il testo da stampare a mio piacimento.)
(ho usato grep -P per poter accorciare la riga direttamente):

Codice: Seleziona tutto

data_ora=$(date +"%d/%m/%Y %H:%M:%S")
dati=$(speedtest-cli | grep -Po 'Testing from \K.*|Download.*|Upload.*')
echo "$data_ora --> "$dati
Puoi fare la redirezione su file normalmente dalla riga con 'echo'.

P.S.: se vuoi accorciare ancora di più e non ti interessa l'IP:

Codice: Seleziona tutto

grep -Po 'Testing from \K.* |Download.*|Upload.*'
Salva l'Ucraina! 🇺🇦
Avatar utente
ndrini
Scoppiettante Seguace
Scoppiettante Seguace
Messaggi: 493
Iscrizione: domenica 6 settembre 2009, 22:25
Contatti:

Re: [Risolto] output grep non a capo

Messaggio da ndrini »

Grazie 1000.
Poi lo studio con attenzione.
Andrea

PS si l'IP mi interessa, per sapere a quale rete attribuire la velocità
Scrivi risposta

Ritorna a “Programmazione”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti