2014-07-22 4 views
0

Voici mon code:IGNORECASE en comparaison de fichiers avec awk

'FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 

il fait exactement ce que je dois sauf que je dois ignorecase. J'ai essayé d'utiliser IGNORECASE = 1 dans différents endroits mais je ne peux pas le faire fonctionner. il échoue, me donne zéro résultat, ou l'ignore tous ensemble. J'ai essayé d'utiliser BEGIN [IGNORECASE = 1} sans aucune chance.

toute aide serait appréciée, je suis perdu. Je cours ceci dans une fenêtre de terminal, pas encore à partir d'un script bash. qui est l'objectif final

Remarque: La sortie doit contenir le cas pour correspondre à des fichiers originaux

Voici le code exact que je l'ai essayé avec IGNORECASE:

awk -F, 'IGNORECASE=1 FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, 'FNR==NR {IGNORECASE=1} {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, '{IGNORECASE = 1} FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, 'BEGIN {IGNORECASE = 1} FNR==NR {a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 
awk -F, 'FNR==NR {{IGNORECASE=1} a[$1 FS $2 FS $3 FS $4]++; next} !a[$1 FS $2 FS $3 FS $5]' comparegam.txt workstudyusers1.csv >noidea6.txt 

et diverses itérations de ces derniers.

+1

Au lieu d'une comparaison insensible à la casse, essayez la comparaison des majuscules. – alvits

+1

Utilisez-vous gawk (GNU awk)? 'IGNORECASE' est spécifique à gawk. Vous l'avez épelé comme 'IGNORCASE' dans le titre; Êtes-vous sûr de l'avoir épelé correctement dans votre code? Copiez et collez le code exact qui ne fonctionne pas. –

+0

J'ai ajouté les différentes itérations que j'ai essayé, a également fixé le titre. le tolower a fonctionné, mais j'aime quand même savoir pourquoi IGNORECASE ne fonctionne pas. J'ai fait awk man et IGNORECASE est répertorié comme une option. – moore1emu

Répondre

3
' 
    FNR==NR { 
    a[tolower($1 FS $2 FS $3 FS $4)]++; 
    next 
    } 
    !a[tolower($1 FS $2 FS $3 FS $5)] 
' comparegam.txt workstudyusers1.csv >noidea6.txt 
+0

+1 pour la solution portable. –

+0

Le tolower a fonctionné, merci – moore1emu

+0

par curiosité J'ai remarqué que vous avez changé les parenthèses de [à (autour de la partie $ 1, besoin spécifique ou juste préférence? – moore1emu

Questions connexes