Puncte:0

Înlocuiți secvența unui personaj cu altul

drapel in

Am o ieșire de la o comandă de monitorizare a rețelei și arată astfel:

                     391KB 7,48MB 7,86MB

Care au mai întâi multe spații. Acum vreau să înlocuiesc toate spațiile cu ,.
am incercat sed 's/ /,/g' fişier_intrare > fişier_ieşire, Dar rezultatul nu este exact ceea ce mă aștept:

,,,,,,,,,,,,,,,,,,,,,391KB,,,,,7,48MB,,,,,7,86MB

chiar am incercat:

sed -r 's/(.*) /\1,/; s/ //g' fișier.txt > output.txt

Dar rezultatul a fost ca mai jos:

391KB7,48MB,7,86MB

Cum pot înlocui secvența de spații cu o virgulă?
Cred că este bine să menționez că vreau să adaug aceste date în fișierul csv.

Puncte:5
drapel hr

Puteți potrivi o secvență de unul sau mai multe spații portabil în expresii regulate de bază (BRE) folosind oricare * (spațiu-spațiu-stea) sau \{1,\}. În Extended Regular Expression (ERE) puteți utiliza {1,} sau +. Numele general pentru aceste constructe este Cuantificatori.

$ echo ' 391KB 7.48MB 7.86MB' | sed 's/ */,/g'
,391KB,7.48MB,7.86MB

$ echo ' 391KB 7.48MB 7.86MB' | sed -r 's/ +/,/g'
,391KB,7.48MB,7.86MB

GNU sed vă permite să utilizați scăpat \+ în BRE (precum și \? pentru cuantificatorul 0-sau-1) - la fel ca GNU grep.

Ai putea folosi, de asemenea tr, cu -s (--strânge-se repetă) steag:

$ echo ' 391KB 7.48MB 7.86MB' | tr -s ' ' ,
,391KB,7.48MB,7.86MB

Cu toate acestea, dacă nu doriți un câmp CSV inițial gol, luați în considerare utilizarea awk - deoarece cu separatorul de câmp implicit, va trata spațiul alb contiguu ca un singur delimitator și va ignora spațiul alb principal:

$ echo ' 391KB 7.48MB 7.86MB' | awk '{$1=$1} 1' OFS=,
391KB,7.48MB,7.86MB
Puncte:0
drapel gi

Folosind sed

echo ' 391KB 7.48MB 7.86MB' | sed -r 's/^ +//g;s/ +/,/g'

vei avea

391KB,7.48MB,7.86MB

Sau, alternativ, dacă separatorul este spațiu și puteți îmbina mai multe spații, puteți folosi și cel mare Miller în acest fel

echo ' 391KB 7.48MB 7.86MB' | mlr --n2c --ifs ' ' -N --repifs cat

a avea

391KB,7.48MB,7.86MB

Pornind de la un fișier

<input mlr --n2c --ifs ' ' -N --repifs cat >output.csv

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.