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