awk:第 1 行:位于或附近的语法错误,需要 bash 的一些帮助
awk: line 1: syntax error at or near , need some help for bash
这是代码,CN 部分可以正常工作,但是 awk...
我运行在外面运行,看起来很清楚。我刚刚遇到 bash :(
windowsearch()
{
starting_line_number=
ending_line_number=
position=
file_name=
CN=$(head -40 "" | 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
但我的输出为我提供了文件中的所有数据。所以,我认为我的过滤器不起作用。
编辑:抱歉造成误会,这是我的第一个问题。
我对你的意图的解读
您想根据给定的列对文件中的一系列行进行排序。
$ awk -v start=10 -v end=20 'start<=NR && NR<=end' | sort -n k2
只需在脚本中参数化输入值
您的问题缺少对任务的描述,理想情况下,缺少输入数据和所需输出的示例。很难从完全损坏的脚本片段中猜出某人的意图。一个可能的疯狂猜测可能是:
windowsearch() {
awk "NR > {exit}
NR >= " < "" | sort -k ""
}
awk
代码exit
s后超过行数上限,到达下限后打印整行。 (NR
是当前行号。)awk
的输出(即下限和上限之间的行间隔)得到 sort
ed(awk
本身也可以这样做,但在这种情况下使用 sort
会更短)。
示例(按挂载点(字段 2)对 /etc/fstab
行 9 到 13 进行排序):
windowsearch 9 13 2 /etc/fstab
这是代码,CN 部分可以正常工作,但是 awk...
我运行在外面运行,看起来很清楚。我刚刚遇到 bash :(
windowsearch()
{
starting_line_number=
ending_line_number=
position=
file_name=
CN=$(head -40 "" | 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
但我的输出为我提供了文件中的所有数据。所以,我认为我的过滤器不起作用。
编辑:抱歉造成误会,这是我的第一个问题。
我对你的意图的解读
您想根据给定的列对文件中的一系列行进行排序。
$ awk -v start=10 -v end=20 'start<=NR && NR<=end' | sort -n k2
只需在脚本中参数化输入值
您的问题缺少对任务的描述,理想情况下,缺少输入数据和所需输出的示例。很难从完全损坏的脚本片段中猜出某人的意图。一个可能的疯狂猜测可能是:
windowsearch() {
awk "NR > {exit}
NR >= " < "" | sort -k ""
}
awk
代码exit
s后超过行数上限,到达下限后打印整行。 (NR
是当前行号。)awk
的输出(即下限和上限之间的行间隔)得到 sort
ed(awk
本身也可以这样做,但在这种情况下使用 sort
会更短)。
示例(按挂载点(字段 2)对 /etc/fstab
行 9 到 13 进行排序):
windowsearch 9 13 2 /etc/fstab