Ниже будет работать ..
#!/bin/ksh
#replacing pipe with comma
sed "s/|/,/g" input.txt > temp1.txt
#traverse rows into columns
awk -F, '{for(i=1;i<=NF;i++){A[NR,i]=$i};if(NF>n){n=NF}}
END{for(i=1;i<=n;i++){
for(j=1;j<=NR;j++){
s=s?s","A[j,i]:A[j,i]}
print s;s=""}}' temp1.txt > temp2.txt
#trim all white spaces
sed 's/ //g' temp2.txt > temp3.txt
#comparing all values between CALC & PMI and generate new column for SMDW
awk -F, '{print $0, (($3==$4)?"":"UN") "MATCH"}' temp3.txt > temp4.txt
sed "s/ /,/g" temp4.txt > temp5.txt
#traverse rows into columns again
awk -F, '{for(i=1;i<=NF;i++){A[NR,i]=$i};if(NF>n){n=NF}}
END{for(i=1;i<=n;i++){
for(j=1;j<=NR;j++){
s=s?s","A[j,i]:A[j,i]}
print s;s=""}}' temp5.txt > temp6.txt
#csv to fixed length convertion for better viewing
awk -F, '{printf("%22s|%18s|%18s|%18s\n", $1, $2, $3, $4, $5, $6, $7, $8,
$9)}' temp6.txt > output.txt
exit;
EOF
Предположим, мы анализируем данные ниже в файле input.txt,
NAME |COMPARNY | DT1| DT2
MR.X |ABC | 48737953.20| 11219420.39
MR.N |XYZ | 48737953.20| 11219421.39
MR.B |LMN | 48737953.20| 11219420.39
А данные в output.txt есть,
NAME| COMPARNY| DT1| DT2
MR.X| ABC| 48737953.20| 11219420.39
MR.N| XYZ| 48737953.20| 11219421.39
MR.B| LMN| 48737953.20| 11219420.39
UNMATCH| UNMATCH| MATCH| UNMATCH