Hol szerezhetem be az új karakterláncot az `sub` futtatása után az awk

Awk programozási nyelvből

A sub ( r, s , t ) függvény először megtalálja a r szabályos kifejezéssel illesztett leghosszabb hosszúságú részstruktúrát a t; ezután az alsztringet a s helyettesítő karakterlánccal helyettesíti.

A sub(r,s) függvény a sub(r,s,$0) szinonimája.

A sub ( /ana/, "anda" , "banana" ) banana helyébe bandada lép.

A sub ( r, s , t ) futtatása után hogyan kaphatom meg az új karakterláncot? Például a sub ( /ana/, "anda" , "banana" ) részben hogyan szerezhetem be az új karakterláncot bandada?

Az alfunkció a végrehajtott helyettesítések számát adja vissza.

A sub visszatérése 0 vagy 1? Helyes, hogy “nem lehet több, mint egy, mert a sub csak az első mérkőzést találja meg és cserélje le?

Köszönöm.

Válasz

A GNU awk kézikönyvéből 9.1.3 Karakterlánc-manipulációs funkciók :

… a sub() harmadik argumentumának változónak, mezőnek vagy tömbelemnek kell lennie. Néhány Az awk verziói lehetővé teszik, hogy a harmadik argumentum olyan kifejezés legyen, amely nem érték. Ilyen esetben a sub() továbbra is a mintára keres, és nulla vagy egy értéket ad vissza, de a A helyettesítést (ha van) eldobják, mert nincs hova tenni. Az awk ilyen változatai elfogadják a következő kifejezéseket:

sub(/USA/, "United States", "the USA and Canada")

A múltbeli kompatibilitás érdekében a gawk elfogadja az ilyen hibás kódokat. Bármely más, nem cserélhető objektum használata harmadik paraméterként végzetes hibát okoz, és a program nem fog futni.

Tehát a válasz egy változó használata:

awk "BEGIN{t = "banana"; sub(/ana/,"anda",t); print t}" bandana 

Vélemény, hozzászólás?

Az email címet nem tesszük közzé. A kötelező mezőket * karakterrel jelöltük