在 bash 中的特定文件列中查找重复项
Find duplicates in particular column of file in bash
我正在尝试在文件的第 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
这是错误的:
m = `sort SPP_OUT | awk -v tk=$key '{dup[tk]++}
END { for (i_1 in dup) if (dup[i_1]>1) print i_1;}'`
您在 =
周围有 space 并且行内有新行。
有些像这样:
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;}')
为什么要使用变量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" '[=14=]~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
If key=09
现在将测试列 9
是否有重复项。如果是,打印 yes
tk+0
用于删除前导零,因此 09
变为 9
我正在尝试在文件的第 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
这是错误的:
m = `sort SPP_OUT | awk -v tk=$key '{dup[tk]++}
END { for (i_1 in dup) if (dup[i_1]>1) print i_1;}'`
您在 =
周围有 space 并且行内有新行。
有些像这样:
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;}')
为什么要使用变量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" '[=14=]~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
If key=09
现在将测试列 9
是否有重复项。如果是,打印 yes
tk+0
用于删除前导零,因此 09
变为 9