Je tiens à en extraire les champs suivants du fichier texte joint. J'ai copié le contenu d'un fichier pdf et de les coller dans le fichier texte afin que je puisse utiliser awk pour les extraire. La disposition est comme indiqué ci-dessous.
nom1, nom2, name3, name4, le titre, la désignation, la nationalité, la date de naissance,
national d'identification, l'adresse, la liste, d'autres informations
Le problème est si je supprimer les commentaires dans le script, je semble avoir rien à mettre dans le fichier. S'il vous plaît, aidez, je suis de nouveau à la programmation et de ses awk déconcertant moi. Et certains des renseignements que je suis l'extraction est dans la mauvaise colonnes. Qu'est-ce que je fais de mal? S'il vous plaît conseils. Je suis nouveau à ce langage
1) Il s'agit du script
Code:
BEGIN { print "name1,name2,name3,name4,Title,designation,nationality,dob,national identication,address,listed On,Other information";Title=""; dob=""; nationality="";
}
/*Name(:?)/ {
if (Title != "" )
{
printf ",%s",Title;
Title=" ";
}
if (designation != "" )
{
printf ",%s",designation;
designation=" ";
}
if (nationality != "" )
{
printf ",%s",nationality;
nationality=" ";
}
if (dob != "" )
{
printf ",%s\n",dob;
dob=" ";
}
line = $0;
gsub(/[[:digit:]]+:/,"",line);
gsub(/[[:digit:]]+\./,"",line);
sub(/*Name:/,"",line);
sub(/*Name/,"",line);
split(line,names);
x = 1;
while (x<=3)
{
printf "%s,", names[x];
x++;
}
printf "%s", names[x];
name1 = $4;
name2 = $6;
name3=$8;
name4=$10;
}
##--> Add title field
/Title:/ {
line=$0;
idx1 = index(line,"Title:");
idx2 = index(line,"Designation:");
if (idx2==0)
{
idx2 = length(line)+1;
}
Title = substr(line, idx1+length("Title:"), idx2 - idx1 - length("Title:") );
sub(",",";",Title)
}
##--> Add Designation
/Designation:/ {
line=$0;
idx1 = index(line,"Designation:");
idx2 = index(line,"DOB:");
if (idx2==0)
{
idx2 = length(line)+1;
}
designation = substr(line, idx1+length("Designation:"), idx2 - idx1 - length("Designation:") );
sub(",",";",designation)
}
/*Nationality: / {
line = $0;
idx1 = index(line,"*Nationality: ");
idx2 = index(line,"Passport");
nationality = substr(line, idx1+length("*Nationality: "), idx2 - idx1 - length("*Nationality: ") );
sub(",",";",nationality)
}
/DOB:/ {
line=$0;
idx1 = index(line,"DOB:");
idx2 = index(line,"POB");
if (idx2==0)
{
idx2 = length(line)+1;
}
dob = substr(line, idx1+length("DOB:"), idx2 - idx1 - length("DOB:") );
sub(",",";",dob)
}
##/National identification no.:/ {
##line=$0;
##idx1 = index(line,"National identification no.:");
##idx2 = index(line,"Address");
##if (idx2==0)
##{
## idx2 = length(line)+1;
##}
##dob = substr(line, idx1+length("National identification no.:"), idx2 - idx1 - length("National identification no.:") );
##sub(",",";",National identification no)
##}
##/Title:/ {context="title"; printf "%s:",context}