awk:第 1 行:在或附近出现语法错误,需要一些 bash 帮助 [关闭]

Posted

技术标签:

【中文标题】awk:第 1 行:在或附近出现语法错误,需要一些 bash 帮助 [关闭]【英文标题】:awk: line 1: syntax error at or near , need some help for bash [closed] 【发布时间】:2021-11-29 18:20:33 【问题描述】:

这里是代码,CN 部分可以工作,但是 awk...

我在外面运行函数,看起来很清楚。我刚遇到 bash :(

    windowsearch()
    
        starting_line_number=$1
        ending_line_number=$2
        position=$3
        file_name=$4
        CN=$(head -40 "$4" | sed -n "$starting_line_number","$ending_line_number p" ) 
        awk -v CN="$CN" -F "\t" ' print CN ' "$file_name" | sort -n -k"$position"
    
    


windowsearch 10 20 2 $imdbdir/tsv2/title.principals.tsv

想要的输出是这样的:

应该让步:

tt0000009    nm0085156,nm0063086,nm1309758,nm0183823
tt0000014    nm0166380,nm0525910,nm0244989
tt0000010    nm0525910
tt0000016    nm0525910
tt0000012    nm0525910,nm0525908
tt0000015    nm0721526
tt0000018    nm0804434,nm3692071
tt0000019    nm0932055
tt0000013    nm1715062,nm0525910,nm0525908
tt0000017    nm3691272,nm0804434,nm1587194,nm3692829
tt0000011    nm3692297,nm0804434

但我的输出给了我文件中的所有数据。所以,我认为我的过滤器不起作用。

编辑:对不起,这是我的第一个问题。

【问题讨论】:

请添加合适的 shebang (#!/bin/bash),然后将您的脚本粘贴到 shellcheck.net 并尝试实施那里提出的建议。 无关:为什么要分配file_name=$4,然后到处使用$4?其他变量也是如此。 顺便说一句:用CN替换最后一个$CN 您希望awk 命令做什么?这对我来说没有任何意义。另外,请修正最后的命令格式;我认为应该是code block 或类似的东西。 请发布一些带有相关预期输出的示例数据。不要将它们作为 cmets、图像、表格或非现场服务的链接发布,而是使用文本并将它们包含在您的原始问题中。谢谢。 【参考方案1】:

您的问题缺少对任务的描述,理想情况下,缺少输入数据和所需输出的示例。从完全损坏的脚本 sn-p 中很难猜出某人的意图。一个可能的疯狂猜测可能是:

windowsearch() 
  awk "NR > $2 exit
       NR >= $1" < "$4" | sort -k "$3"

awk 代码exits 超过行号上限并在达到下限后打印整行。 (NR 是当前行号。)awk 的输出(下限和上限之间的行间隔)得到sorted(awk 本身也可以这样做,但使用@在这种情况下,987654328@ 更短)。

示例(/etc/fstab 第 9 到 13 行按挂载点排序(字段 2)):

windowsearch 9 13 2 /etc/fstab

【讨论】:

它成功了,谢谢,但我不得不删除 CN 部分。你能解释一下这段代码吗? 当然,CN 部分无论如何都没有多大意义。我将在答案中添加一个简短的解释。【参考方案2】:

我对你的意图的解释

您想根据给定的列对文件中的一系列行进行排序。

$ awk -v start=10 -v end=20 'start<=NR && NR<=end' | sort -n k2

只需参数化脚本中的输入值

【讨论】:

以上是关于awk:第 1 行:在或附近出现语法错误,需要一些 bash 帮助 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

使用 psycopg2 在 python 中执行查询时出现“ProgrammingError:在或附近出现语法错误”

-e 第 1 行,“'755']”附近的 nmake 语法错误

第 14 行 '' 附近的 SQL 语法错误

错误:消息102,级别15,状态1,过程InsertCustomers,第30行'THROW'附近的语法不正确

关键字“FOR”XML 附近的语法不正确

为啥我会出现此错误:“数组”第 2 行或附近的语法错误:值数组?