如何使用AWK提取每个学生的唯一记录?
我正在尝试处理学生的反馈文件如何使用AWK提取每个学生的唯一记录?,awk,sed,gawk,Awk,Sed,Gawk,我正在尝试处理学生的反馈文件 情景: 第5和第6个字符是sutdent id 一名学生可以提供多个反馈 提取每个学生的第一次反馈 学生反馈.txt: 288Y102RZDBP100000001Dhana 10Q115W4ZEAV18LXNPSPGRTTIDBN100000005EGW JP2F1164EI100000002D EU9V103IXI1000000003DFG1000000001DFDS XATS11SSSFOO4dhanaUXIBB7TF71000000004adf 10Q11
情景:
- 第5和第6个字符是sutdent id
- 一名学生可以提供多个反馈
- 提取每个学生的第一次反馈
BEGIN {
Studnet_Ids = "10,11,12,13";
n=split(Studnet_Ids,array,",");
count = 0;
delete Stu_Found[0];
}
{
StuId=substr($0,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;
}
}
}
}
开始{
Studnet_id=“10,11,12,13”;
n=拆分(Studnet_id,数组,“,”);
计数=0;
删除找到的Stu_[0];
}
{
StuId=substr($0,5,2)
n=长度(数组);
如果(长度(数组)!=0&&(数组中的StuId)){
为了(i=1;iawk
救援
$ awk '!a[substr($0,5,2)]++' file
288Y102RZDBPX1000000001dhana
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d
XATS11SSSFOO4dhanaUXIBB7TF71000000004adf
可以使用非awk解决方案(id将在输出中排序)
感谢您的输入。我将尝试更新状态。
$ sort -s -k1.5,1.6 file | uniq -s4 -w2
288Y102RZDBPX1000000001dhana
XATS11SSSFOO4dhanaUXIBB7TF71000000004adf
10Q115W4ZEAV18LXNPSPGRTTIDHBN1000000005egw JP2F1164EI1000000002d