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
Vastaa
Olet oikealla tiellä!
Lisää vain puuttuvat lainausmerkit ympärille [ :]
:
awk -F"[ :]" "{print $2}" test.txt Engineer Doctor GovntJob Master
-F[ :]
(yksi arg) se sai-F[:
ja]
. Tämä kaavio on melko kätevä (huomioi pystysuuntaiset nuolet yksittäisissä / kaksoislainauksissa).