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