Van egy szöveges fájlom, amely tweeteket tartalmaz, és nekem meg kell számolnom, hogy egy szó hányszor szerepel a tweetben . Például a fájl a következőket tartalmazza:

Apple iPhone X is going to worth a fortune The iPhone X is Apple"s latest flagship iPhone. How will it pit against it"s competitors? 

És mondjuk azt, hogy meg akarom számolni, hányszor szerepel az iPhone szó a fájlban. Tehát itt van, amit kipróbáltam.

cut -f 1 Tweet_Data | grep -i "iPhone" | wc -l 

ez biztosan működik, de a “wc” paranccsal unix-ben zavarba jöttem. Mi a különbség ha valami ilyesmivel próbálkozom:

cut -f 1 Tweet_Data | grep -c "iPhone" 

ahol helyette a -c elemet használják? Mindkettő különböző eredményeket ad egy nagy, tweetekkel teli fájlban, és zavart vagyok hogyan működik. Melyik módszer a helyes módja az előfordulás számlálásának?

Megjegyzések

Válasz

Ilyen követelmény miatt szeretném használjon egy GNU grep-et (a -o opcióhoz ), majd adja át wc az előfordulások teljes számának megszámolásához:

$ grep -o -i iphone Tweet_Data | wc -l 3 

Sima grep -c az adatokon az egyező sorok száma számít, nem pedig az egyező szavak száma. Az -o opció használatával a grep megmondja, hogy minden mérkőzést a saját sorára bocsásson ki, függetlenül attól, hogy az eredeti sorban hányszor találták meg az egyezést.

wc -l utasítja a wc segédprogramot, hogy számolja meg a sorok számát. Miután a grep minden mérkőzést a saját sorába rakta, ez az összes szó előfordulásának száma a bemenetben.


Ha a GNU grep nem érhető el (vagy kívánatos), akkor átalakíthatja a írja be a tr karakterláncot úgy, hogy minden szó a saját sorára kerüljön, majd a grep -c paranccsal számolja:

$ tr "[:space:]" "[\n*]" < Tweet_Data | grep -i -c iphone 3 

Válasz

A legkönnyebb módszer,

grep -wc "your_text" FileName 

neked ez lesz,

grep -wc "iPhone" Tweet_Data 

megjegyzések

  • nagyon tiszta válasz, ha mégis megfelelnek egy olyan szónak, mint ' cool ', akkor csak a hűvös és a NEM megfelelő, tehát ne feledje, hogy a szó körüli szóközök fontosak. li>
  • Az eredmény hibás lesz, ha a szó többször szerepel egy sorban.

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük