Puncte:1

Cum se numără numărul de linii identice consecutive

drapel in

Am un fișier care arată așa:

2000
2000
2001
2001
2001
2001
2002
2002

Am nevoie de un script care să-mi arate asta:

2000 - 2
2001 - 4
2002 - 2

Prefer să folosesc sed sau awk

drapel hr
Acesta sună exact pentru ceea ce a fost inventat `uniq -c`...
Joe Jobs avatar
drapel in
O, frumos, nu știam asta. Mulțumiri!
bac0n avatar
drapel cn
`uniq -c fișier | sed -rn 's/ *([0-9]+) (.*)/\2 - \1/p'`
Puncte:1
drapel cn

Tocmai asta este uniq -c face. Din om unic:

DESCRIERE

Filtrați liniile adiacente care se potrivesc din INPUT (sau intrare standard), scriind în OUTPUT (sau ieșire standard).

[ . . . ]

-c, --count
      linii de prefix după numărul de apariții

Deci, cu exemplul tău, obținem:

$ uniq -c fișier
      2 2000
      4 2001
      2 2002

Puteți scrie și un mic scenariu dacă preferați dintr-un motiv oarecare. De exemplu, cu awk:

$ awk „{ count[$0]++ } END{ for(line in count){ print line,count[line] }}” fișier 
2000 2
2001 4
2002 2

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.