Puncte:0

Cum să adăugați o altă coloană

drapel ng

Încerc să transform un fișier ca acesta în ceva din partea de jos. Nu sunt sigur cum să folosesc awk sau paste pentru a face acest lucru.

0.0000000000  0.0000000000  0.0000000000 
0.7804643317  0.5703578412   0.0000000000 
-0.7804643317  0.5703578412   0.0000000000 

Aș avea de-a face cu un număr în schimbare de rânduri pentru fișierul pe care încerc să-l transform.

0.0000000000 0  0.0000000000 0  0.0000000000 0
0.7804643317 0  0.5703578412 0  0.0000000000 0
-0.7804643317 0  0.5703578412 0  0.0000000000 0
drapel cn
Ray
Cred că ai vrut să spui „numărul de rânduri ar rămâne la trei, dar numărul de coloane s-ar schimba”?
Puncte:4
drapel in

Aș folosi sed:

sed -i -E fișierul 's/([^ ]+)/\1 0/g'

sau dacă fișierul este delimitat de tabulatori:

sed -i -E fișierul 's/([^\t]+)/\1\t0/g'
  • -i editați fișierul pe loc.
  • s/model/înlocuire/ înseamnă înlocuirea modelului cu un șir de înlocuire.

SAU awk

awk -i inlocuieste fisierul '{pentru (f=1;f<=NF; f++){$f=$f" 0"}}1'

sau

awk -i inlocuieste fisierul '{pentru (f=1;f<=NF; f++){$f=$f"\t0"}}1'

Cu toate acestea, majoritatea implementărilor nu acceptă -eu la loc. Apoi, trebuie să scrieți rezultatul într-un fișier temporar și să suprascrieți fișierul original cu acesta:

awk '{pentru (f=1;f<=NF; f++){$f=$f" 0"}}1' fișier > fișier.tmp && mv fișier.tmp
Puncte:2
drapel cn

O abordare Perl:

$ perl -ane 'printează "$_ 0" pentru @F; tipăriți fișierul „\n”.
0,0000000000 0 0,0000000000 0 0,0000000000 0 
0,7804643317 0 0,5703578412 0 0,0000000000 0 
-0,7804643317 0 0,5703578412 0 0,0000000000 0 

Sau, pentru a edita fișierul original:

perl -i -ane 'printează "$_ 0" pentru @F; tipăriți fișierul „\n”.
Puncte:0
drapel mm

S-a adăugat ajutor de la: https://unix.stackexchange.com/questions/11801/replace-all-white-spaces-with-commas-in-a-text-file

$ cat text.file | sed 's/[[:blank:]]\+/\ 0\ /g'

 0,0000000000 0 0,0000000000 0 0,0000000000 0
 0,7804643317 0 0,5703578412 0 0,0000000000 0
 -0,7804643317 0 0,5703578412 0 0,0000000000 0

sau înfrumusețați cu coloana:

$ cat text.file | sed 's/[[:blank:]]\+/\ 0\ /g' | coloana -t -e

 0,0000000000 0 0,0000000000 0 0,0000000000 0 
 0,7804643317 0 0,5703578412 0 0,0000000000 0
 -0,7804643317 0 0,5703578412 0 0,0000000000 0

Atenție, acest lucru ține cont de spațiile goale la sfârșitul șirului. Poate doriți să filtrați cu o sedare anterioară.

 $ cat text.file | sed 's/[[:blank:]]\+$//g' | sed 's/[[:blank:]]\+/\ 0\ /g' | coloana -t -e

 0,0000000000 0 0,0000000000 0 0,0000000000 
 0,7804643317 0 0,5703578412 0 0,0000000000
 -0,7804643317 0 0,5703578412 0 0,0000000000
terdon avatar
drapel cn
Rețineți că nu aveți nevoie de pisică acolo. Puteți da fișierul lui sed ca argument. De asemenea, nu trebuie să evadați din spații.
bac0n avatar
drapel cn
Probabil doriți să utilizați ceva de genul `[[: blank:]]\+\|$` (deși există spații la sfârșitul exemplului, noua linie este probabil mai comună).

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.