Kaksi kentän erotinta (kaksoispiste ja välilyönti) awk: ssä

Kuinka voimme määrittää kaksi kentän erotinta awk-komennossa, kun toinen niistä on välilyönti? Mielestäni tämä voidaan tehdä käyttämällä upotettua if-else-ehtoa awk-tiedostossa, mutta en ole varma tarkasta komennosta.

Esimerkkitiedosto on seuraavanlainen:

cat test.txt Swapnil Engineer 20000 Avinash:Doctor:30000 Dattu GovntJob 50000 Amol:Master:10000 

Haluan tulostaa toisen sarakkeen (2 dollaria). Odotettu tulos on:

Engineer Doctor GovntJob Master 

Kun yritin laittaa sekä välilyönnin että kaksoispisteen kentänerottimiksi, se epäonnistui syntaksivirheellä:

awk -F[ :] "{print $2}" test.txt awk: cmd. line:1: :] awk: cmd. line:1: ^ syntax error 

Kuinka voimme käyttää kahta kentän erotinta ja käyttää awk-toimintoja?

Kommentit

  • Yeti ' vastaus, muista, että kuori jakautuu noteeraamattomalla välilyönnillä luomaan luettelo awk-argumenteista, joten -F[ :] (yksi arg) se sai -F[: ja ]. Tämä kaavio on melko kätevä (huomioi pystysuuntaiset nuolet yksittäisissä / kaksoislainauksissa).
  • Kiitos ArielCo, suuresti arvostettu!

Vastaa

Olet oikealla tiellä!
Lisää vain puuttuvat lainausmerkit ympärille [ :]:

awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master 

Vastaa

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