【发布时间】:2021-09-07 04:36:11
【问题描述】:
我是 Awk 的新手。 我有一个包含 awk 脚本的文件夹和一个名为 MODELE1 的文件。 我正在尝试运行我的脚本,更具体地说是以下行:
awk '($1 != "GRID") {print $0}' MODELE1 > MAIL_SANS_GRID
awk "($1 == "GRID") {print $0}" MODELE1 | sort -n -k 2,2 > GRID_REP_COQ
但我得到了错误
^ 表达式中的无效字符 '''
对于'...'
我尝试将其更改为 ... 和 " ..." 。在第一种情况下,我收到相同的错误消息,在第二种情况下,“排序”出现语法错误。
有人知道怎么解决吗?
提前致谢。
编辑:为清楚起见,这是整个脚本,称为 grid_sorting:
#!/bin/awk -f
# Model and GRID cards extraction
awk '($1 != "GRID") {print $0}' MODELE1 > MAIL_SANS_GRID
# GRID sorting
awk '($1 == "GRID") {print $0}' MODELE1 | sort -n -k 2,2 > GRID_REP_COQ
# Model and sorted GRID cards concatenation
cat MAIL_SANS_GRID GRID_REP_COQ > MODELE
然后我使用命令在终端中运行脚本
./grid_sorting
我得到错误:
awk: ./grid_sorting:4: awk '($1 != "GRID") {print $0}' MODELE1 > MAIL_SANS_GRID
awk: ./grid_sorting:4: ^ invalid char ''' in expression
awk: ./grid_sorting:4: awk '($1 != "GRID") {print $0}' MODELE1 > MAIL_SANS_GRID
awk: ./grid_sorting:4: ^ syntax error
如果我切换到双引号:
#!/bin/awk -f
# Model and GRID cards extraction
awk "($1 != "GRID") {print $0}" MODELE1 > MAIL_SANS_GRID
# GRID sorting
awk "($1 == "GRID") {print $0}" MODELE1 | sort -n -k 2,2 > GRID_REP_COQ
# Model and sorted GRID cards concatenation
cat MAIL_SANS_GRID GRID_REP_COQ > MODELE
我得到错误:
awk: ./grid_sorting:6: awk "($1 == "GRID") {print $0}" MODELE1 | sort -n -k 2,2 > GRID_REP_COQ
awk: ./grid_sorting:6: ^ syntax error
中间文件 MAIL_SANS_GRID 已创建但为空。
【问题讨论】:
-
But I get the error请逐字发布整个错误。前面没有awk: something: something:吗?错误正是^ invalid char ''' in the expression For the '...'?awk在错误前打印awk:。所以你注意到第一行是awk ',第二行是awk "? -
关于
more specifically the line:- 该语句后面是 2 行,而不是 1。这 2 行中的哪一行出现了语法错误? -
嗨!谢谢大家的 cmets Ed Morton,这是我的拼写错误,我的意思是行 rowboat,我在终端 @KamilCuk 中运行命令 ./grid_sorting(脚本的名称)这里是完整的错误声明原始脚本(所以使用' ... '): molx1801: ./grid_sorting awk: ./grid_sorting:4: awk '($1 != "GRID") {print $0}' MODELE1 > MAIL_SANS_GRID awk: ./grid_sorting: 4: ^ invalid char ''' in expression awk: ./grid_sorting:4: awk '($1 != "GRID") {print $0}' MODELE1 > MAIL_SANS_GRID awk: ./grid_sorting:4: ^ 语法错误
-
@elle.delle 请不要在无法格式化且容易遗漏的 cmets 中添加信息。 edit您的问题包括所有相关信息。另外,对于我的具体问题,我并不是要您将文本中的“1 行”更改为“行”,而是要求您告诉我们哪一行产生了您的错误消息显示在 2 行下方。