awk jaa parametri char

-tiedoston mukaan:

BASH.NIR SH.ABI 

Haluan awk-komentosarjan näyttää:

User is NIR, SHELL is BASH User is ABI, SHELL is SH 

En tiedä miten parametri jaetaan merkillä. Ajatus on:

cat file.txt | awk "{print "User is " afterDot($1) ", SHELL is " beforeDot($1)}" 

Vastaus

Voit käyttää merkkijonofunktioita kohdassa awk.

$ (echo BASH.NIR; echo SH.ABI FOOBAR) | awk "{p=index($1,".");print "User is", substr($1,p+1) ", SHELL IS", substr($1,0,p-1)}" User is NIR, SHELL IS BASH User is ABI, SHELL IS SH 

Funktio index palauttaa löydettävän merkin (tässä tapauksessa pisteen) sijainnin. div id = ”b6c7d742b8″>

palauttaa alaosan. Käytämme p+1 ja p-1, jotta piste ei sisällytä.

Lisätietoja on awk -sivun String Functions -osiossa.

Vastaa

Voit käyttää kentän erottimena vain .:

awk -F. "{ print "User is " $2 ", SHELL is " $1 }" file.txt 

Kommentit

  • tekstitiedosto voi Minulla on myös välilyöntejä
  • @nir Liitä näyte tarkka syötteestä kysymykseesi, en voi ' arvata miltä se näyttää kuten ellet edusta sitä oikein.
  • @nir – ' on aina parasta sisällyttää todellisia esimerkkitietoja. Laskennallinen data tuhlaa yleensä vastauksen ' aikaa, koska se johtaa yleensä vääriin ratkaisuihin.
  • Olet oikeassa, muodostuu seuraavalla kerralla.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *