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
代码exit
s 超过行号上限并在达到下限后打印整行。 (NR
是当前行号。)awk
的输出(下限和上限之间的行间隔)得到sort
ed(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 语法错误