اینم از آخرین کدی که من نوشتم، توی این کد شما بعد از اجرا ۳ تا فایل تکست میگیرید که یکیش مربوط به سطرهایی با ستون ۲ هستش و دیگری با ستون یک و آخری هم سطرهای بدون تکرار، برای راحتیه کار دو تا فایل اول سورت هم شدن که دیگه تنها کاری که میمونه انتخابشون برا اساس ستون پنجمشونه.
#!/usr/bin/bash
awk -O '
BEGIN {
#printf("Second Column = 2\n")
#printf("\n")
}
{
if(($3, $4) in lineHolder){
#Qablan in sotune 3 va 4 ra didam.
delete uniqHolder[$3, $4]
if (lineHolder[$3, $4] == 2){
if (($3, $4) in two_holders){
print two_holders[$3, $4] > "2column.txt"
delete two_holders[$3, $4]
}
if ($2 == 2){
print $0 > "2column.txt"
}
}else{
if ($2 == 2){
lineHolder[$3, $4] = $2
print $0 > "2column.txt"
delete one_holders
}else{
one_holders[$3, $4, ++oneCounter[$3, $4]] = $0
}
}
}else{
#Qablan in sotune 3 va 4 ra na-didam.
lineHolder[$3, $4] = $2
if($2 == 2){
two_holders[$3, $4] = $0
}else{
one_holders[$3, $4, ++oneCounter[$3, $4]] = $0
}
#shayad az in khat faqat ye doone vojud dashte bashe.
uniqHolder[$3, $4] = $0
}
}
END {
#printf("Second Column = 1\n")
#printf("\n")
for (line in one_holders){
split(line, checkUnique, SUBSEP)
if(checkUnique[3] != 1){
print(one_holders[line]) > "1column.txt"
}
}
#printf("Uniq Lines\n")
#printf("\n")
for (line in uniqHolder){
print(uniqHolder[line]) > "uniqs.txt"
}
delete one_holders
delete two_holders
delete uniqHolder
delete oneCounter
}' "$1"
sort --parallel=4 -nk3,3 -k4,4 -k5,5 -r <2column.txt>2column.back && mv 2column.back 2column.txt
sort --parallel=4 -nk3,3 -k4,4 -k5,5 <1column.txt>1column.back && mv 1column.back 1column.txt