如何使用 AWK 提取每个学生的唯一记录?
How to extract unique records of each student using AWK?
我正在尝试处理学生反馈文件。
场景:
- 第 5 个和第 6 个字符是 sutdent id
- 一个学生可以给出多个反馈
- 提取每个学生的第一个反馈
students_feedback.txt:
288Y102RZDBPX1000000001dhana
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d
EU9V103IXI1000000003dfg1000000001dfdfds
XATS11SSSFOO4dhanaUXIBB7TF71000000004adf
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw
我试过的方法:
我想创建一个数组来指定学生 ID(因为我可以给出特定学生的反馈)并通过 awk 读取文件并提取学生 ID。逐行阅读后,我正在根据 stu id 数组检查 stu id 以创建 stu_found 数组。
BEGIN {
Studnet_Ids = "10,11,12,13";
n=split(Studnet_Ids,array,",");
count = 0;
delete Stu_Found[0];
}
{
StuId=substr([=10=],5,2)
n=length(array);
if(length(array) !=0 && (StuId in array)){
for (i=1;i<=n;i++) {
if(array[i] == StuId){
Stu_Found[count++]=StuId;
}
}
}
}
无论我的方法是否正确,还是有更好的方法来处理这种情况,我都卡在这里了?
awk
救援!
$ awk '!a[substr([=10=],5,2)]++' file
288Y102RZDBPX1000000001dhana
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d
XATS11SSSFOO4dhanaUXIBB7TF71000000004adf
一个non-awk解决方案可以是(id将在输出中排序)
$ sort -s -k1.5,1.6 file | uniq -s4 -w2
288Y102RZDBPX1000000001dhana
XATS11SSSFOO4dhanaUXIBB7TF71000000004adf
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d
我正在尝试处理学生反馈文件。
场景:
- 第 5 个和第 6 个字符是 sutdent id
- 一个学生可以给出多个反馈
- 提取每个学生的第一个反馈
students_feedback.txt:
288Y102RZDBPX1000000001dhana 10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d EU9V103IXI1000000003dfg1000000001dfdfds XATS11SSSFOO4dhanaUXIBB7TF71000000004adf 10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw
我试过的方法:
我想创建一个数组来指定学生 ID(因为我可以给出特定学生的反馈)并通过 awk 读取文件并提取学生 ID。逐行阅读后,我正在根据 stu id 数组检查 stu id 以创建 stu_found 数组。
BEGIN {
Studnet_Ids = "10,11,12,13";
n=split(Studnet_Ids,array,",");
count = 0;
delete Stu_Found[0];
}
{
StuId=substr([=10=],5,2)
n=length(array);
if(length(array) !=0 && (StuId in array)){
for (i=1;i<=n;i++) {
if(array[i] == StuId){
Stu_Found[count++]=StuId;
}
}
}
}
无论我的方法是否正确,还是有更好的方法来处理这种情况,我都卡在这里了?
awk
救援!
$ awk '!a[substr([=10=],5,2)]++' file
288Y102RZDBPX1000000001dhana
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d
XATS11SSSFOO4dhanaUXIBB7TF71000000004adf
一个non-awk解决方案可以是(id将在输出中排序)
$ sort -s -k1.5,1.6 file | uniq -s4 -w2
288Y102RZDBPX1000000001dhana
XATS11SSSFOO4dhanaUXIBB7TF71000000004adf
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d