我试图在文件的第9列中找到重复项: 我尝试使用以下代码。我面临语法错误。你能帮忙吗?
feed="09SPP"
key=${feed:0:2}
echo $key
m = `sort SPP_OUT | awk -v tk=$key '{dup[tk]++}
END { for (i_1 in dup) if (dup[i_1]>1) print i_1;}'`
echo $m
答案 0 :(得分:2)
这是错误的:
m = `sort SPP_OUT | awk -v tk=$key '{dup[tk]++}
END { for (i_1 in dup) if (dup[i_1]>1) print i_1;}'`
=
周围有空格,行内有新行。
有些人喜欢这样:
m=`sort SPP_OUT | awk -v tk=$key '{dup[tk]++} END { for (i_1 in dup) if (dup[i_1]>1) print i_1;}'`
甚至更好,不使用旧的和弃用的背景,使用括号。
m=$(sort SPP_OUT | awk -v tk=$key '{dup[tk]++} END { for (i_1 in dup) if (dup[i_1]>1) print i_1;}')
Wy使用变量i_1
?难以阅读,只需使用i
并删除上一个;
m=$(sort SPP_OUT | awk -v tk=$key '{dup[tk]++} END { for (i in dup) if (dup[i]>1) print i}')
@Madan如果您想测试key
文本中是否有多个匹配,请执行以下操作:
m=$(awk -v tk="$key" '$0~tk {a++} END {if (a>1) print a}' SPP_OUT)
测试n
行是否有重复:
awk -v tk="$key" '++a[$(tk+0)]==2 {f=1} END {if (f) print "yes"}' file
如果key=09
,它现在将测试以查看列9
是否重复。如果是,请打印yes
tk+0
用于删除前导零,因此09
变为9