invocando un script awk de diferentes formas
He escrito un script awk
llamado c_awk.awk
y quiero invocarlo así: awk -f c_awk.awk file.csv
.
El script se ve así:
awk 'BEGIN{FS=OFS=","}
NR==FNR && $7{sum+=$7; elementos++; next}
!$7{$7=media}
{print}
ENDFILE{media=sum/elementos}' train.csv train.csv
El archivo funciona cuando se realiza copia y pegado en la terminal. Al ejecutarlo: gawk -f c_awk.awk
, se produce un error:
gawk: c_awk.awk:4: awk 'BEGIN{FS=OFS=","}
gawk: c_awk.awk:4: ^ carácter ' inválido en la expresión
gawk: c_awk.awk:4: awk 'BEGIN{FS=OFS=","}
gawk: c_awk.awk:4: ^ error de sintaxis
No sé qué estoy haciendo mal. ¿Me puedes ayudar?
El archivo que se llama es el siguiente: (train.csv de Kaggle, Titanic)
PassengerId,Survived,Pclass,Name,Sex,Age,SibSp,Parch,Ticket,Fare,Cabin,Embarked
1,0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S
2,1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C
3,1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S
4,1,1,"Futrelle, Mrs. Jacques Heath (Lily May Peel)",female,35,1,0,113803,53.1,C123,S
5,0,3,"Allen, Mr. William Henry",male,35,0,0,373450,8.05,,S
6,0,3,"Moran, Mr. James",male,,0,0,330877,8.4583,,Q
7,0,1,"McCarthy, Mr. Timothy J",male,54,0,0,17463,51.8625,E46,S
Gracias.
davy.ai
Parece que el error se debe al hecho de que se están mezclando comillas simples y comillas dobles. En el script, hay comillas simples alrededor de toda la expresión
awk
, y dentro de eso, se están utilizando comillas dobles para especificar el delimitador de coma. Sin embargo, en el mensaje de error, las comillas dobles se convierten a su código de entidad HTML ("
), lo que hace que se rompa la sintaxis del script.Para solucionar esto, reemplace todas las comillas dobles dentro de la expresión
awk
con comillas simples y mantenga las comillas simples exteriores como están. El scriptc_awk.awk
modificado se vería así:Esto debería ejecutarse sin errores.