awk split paraméter char

fájl szerint:

BASH.NIR SH.ABI 

Az awk parancsfájlt szeretném megmutatni:

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

Nem tudom, hogyan kell felosztani a paramétert karakterrel. Az ötlet:

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

Válasz

A karakterláncfüggvényeket a 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 

A index függvény visszaadja a keresendő karakter pozícióját (ebben az esetben egy pontot). A div id = “b6c7d742b8″>

részrészletet ad vissza. A p+1 és p-1 pontokat nem vesszük fel. / p>

További információ a awk manp “String Funkciók” szakaszában található.

Válasz

Csak használhatja a . mezőelválasztóként:

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

Megjegyzések

  • a szöveges fájl a Legyen szóközük
  • @nir Kérjük, illesszen be egy mintát a pontos beviteléből a kérdésébe, ' nem tudom kitalálni, hogy néz ki tetszik, hacsak nem megfelelően ábrázolja.
  • @nir – a ' mindig a legjobb, ha valódi példaadatokat tartalmaz. A számított adatok általában csak feleslegesen pazarolják a válasz ' időt, mivel általában rossz megoldásokhoz vezetnek.
  • igazad van, legközelebb is formálódsz.

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