【发布时间】:2022-01-22 18:57:29
【问题描述】:
我编写了一个名为c_awk.awk 的awk 脚本,并希望像awk -f c_awk.awk file.csv 一样调用。
脚本如下所示:
awk 'BEGIN{FS=OFS=","}
NR==FNR &&
$7{sum+=$7;
elementos++;
next}
!$7{$7=media}
{print}
ENDFILE{media=sum/elementos}' train.csv train.csv
该文件在终端中进行复制粘贴时有效。
通过执行:gawk -f c_awk.awk,出现错误:
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: ^ syntax error
我不知道我做错了什么。 你能帮帮我吗?
调用的文件如下:(train.csv from 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
谢谢。
【问题讨论】:
-
copy-paste in the terminal. By executing it: gawk -f c_awk.awk你的终端正在运行一个 shell,而不是gawk。您可以运行sh c_awk.awk,也可以仅将文件替换为 awk 脚本。 -
IOW,如果你执行
gawk -f ...,你应该删除文件中的awk和外面的单引号 -
@KamilCuk,我试过
sh c_awk.awk,但它不起作用。无论如何,我需要执行问题中显示的脚本(由于我的失败,我进行了编辑,对不起):gawk -f c_awk.awk fil.csv -
@WilliamPursell,你的意思是“外部单引号”在哪里?
-
您的脚本当前看起来像
awk '{program to awk}'。通过“外部单引号”,我的意思是如果您打算使用gawk调用它,它应该只是{program to awk}。 (您还需要从脚本中删除输入文件并执行gawk -f program-file < input-file)
标签: awk