gsub: n käyttäminen awk: ssä sanan korvaamiseksi sulkeilla

Hei, kuinka voin käyttää gsubia korvaamaan sulkeissa olevan sanan.

Täällä Haluan korvata ABC (T): llä ABC / G

awk " {gsub("ABC\(T\)","ABC/G")}; Print $0" "$FILENAME" > tmp.tmp && mv tmp.tmp "$FILENAME" 

Vastaa

Voit yksinkertaistaa koko asiaa, jos käytät muotoa // muodossa gsub:

$ echo "ABC(T)" | awk "{gsub(/ABC\(T\)/,"ABC/G")}; print $0" ABC/G 

Sitten voit yksinkertaistaa edelleen käyttämällä print ilman argumentteja (mikä on sama kuin print $0) tai 1 lyhenne tulostusta varten (oletusarvoinen toiminto awk lausekkeille, jotka arvioidaan tosi, kuten 1;

$ echo "ABC(T)" | awk "{gsub(/ABC\(T\)/,"ABC/G")}1" ABC/G 

Henkilökohtaisesti en kuitenkaan käytä awk tätä varten syntakse on lyhyempi ja puhtaampi muiden työkalujen kanssa:

$ echo "ABC(T)" | sed "s|ABC(T)|ABC/G|" ABC/G $ echo "ABC(T)" | perl -pe "s|ABC\(T\)|ABC/G|" ABC/G 

Vastaa

Olit hyvin lähellä. Tarvitset vain kaksi \. Tämä johtuu siitä, että yksi joukko on itse tekstille, joka kulkee BASH: n läpi, ja toinen olisi varsinainen \, jota jäsennetään awk. Tämä näyttää toimivan minulle:

echo "ABC(T)" | awk " {gsub("ABC\\(T\\)","ABC/G")}; Print $0" "$FILENAME" 

Ja antaa:

ABC/G 

Vastaa

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