Сценарий awk не работает с gsub $10 [закрыто]

"Si compro una tarjeta de audio de alta fidelidad que admita almacenamiento en búfer de audio de alta calidad, etc., ¿puedo obtener los auriculares Bluetooth para hacer uso de esto?". Ya que tienes unos auriculares Bluetooth con un dongle usb -bluetooth. ¿Tu dongle bluetooth usb -tiene un puerto auxiliar? Si lo tiene, puedes conectarlo a la tarjeta Hifi; a través de un cable auxiliar.

-2
14.05.2018, 07:44
1 ответ

Al reemplazar $1también reemplaza la parte inicial de$10(y $11, y $12etc. ). $1se reemplaza por var1, por lo que $10se reemplaza porvar10(var1y el sobrante 0de$10).

Debe ser más específico con su expresión regular para que solo coincida con el número específico que le preocupa, y nada más.

Hay dos formas de hacerlo correctamente:

  1. Modificar la expresión regular en la sustitución para que coincida con lo correcto (difícil ).
  2. Primero haga coincidir las cadenas más largas, por ejemplo, sustituyéndolas en el orden de $10a $1en lugar de $1a$10(o cualquiera que sea la cantidad de variables que tenga ).

Uso de la segunda opción:

awk 'NR == FNR { split($0, vars, "|"); next }
     { for (i = length(vars); i >= 1; --i) gsub("\\$" i, vars[i]) } 1' debug-replace-value debug-form-letter

Para los textos dados, esto genera

The first field is var1, the second var2, the third var3,
the 10th field is varA,but  the 10th correct value  is varA.
1
28.01.2020, 05:16

Теги

Похожие вопросы