2017-10-19 54 views
0

le fichier est un fichier séparé par des virgules comme:comment utiliser script bash pour masquer certains champs d'un fichier csv

hue,1,123456,wow,hai 
    heu,2,654321,waw,hey 
    uhe,3,001100,iwi,hel 
    euh,4,119988,qaq,hal 

et nous voulons masquer la troisième colonne avec notre propre méthode:

0->9 
1->8 
2->7 
3->6 
4->5 
5->4 
6->3 
7->2 
8->1 
9->0 

ainsi après le script, nous devrions obtenir quelque chose comme:

hue,1,876543,wow,hai 
    heu,2,345678,waw,hey 
    uhe,3,998899,iwi,hel 
    euh,4,880011,qaq,hal 
+0

@Inian oui nous pouvons faire cela – BeyondTryingToCode

Répondre

0

essayer suivante et laissez-moi savoir si cela vous aide (créé dans GNU awk).

awk -F, 'function change(field){num=split(field, array,"");for(i=1;i<=num;i++){gsub(/.*/,9-array[i],array[i]);new=new?new array[i]:array[i]};$3=new;new=""} change($3) 1' Input_file 

La sortie sera la suivante.

hue 1 876543 wow hai 
heu 2 345678 waw hey 
uhe 3 998899 iwi hel 
euh 4 880011 qaq hal 

EDIT: Une solution générique où vous pouvez modifier les valeurs à l'intérieur BEGIN bloc de tableau tableau nommé et pourrait utiliser toutes les substitutions que vous voulez et vous pourriez de plus en plus de valeurs que vous voulez substituer trop dedans.

awk -F, ' 
BEGIN{ 
    num=split("0-9,1-8,2-7,3-6,4-5,5-4,6-3,7-2,8-1,9-0",array,","); 
    for(i=1;i<=num;i++){ 
    split(array[i],array1,"-"); 
    value[array1[1]]=array1[2] 
} 
} 
function change(field){ 
    num=split(field, a,""); 
    for(i=1;i<=num;i++){ 
    new=new?(a[i] in value?new value[a[i]]:new a[i]):(a[i] in value?value[a[i]]:a[i]) 
}; 
    $3=new; 
    new="" 
} 
change($3) 
1 
' OFS=, Input_file 
+0

vous script est bon. Alors que ce que je demande est le script que je peux personnaliser la méthode. Donc, votre script ne fonctionne que dans le cas où le nombre diminue de 1. Mais si je veux quelque chose comme 0-2 1-4 2-6 .... cela ne fonctionnera pas à coup sûr. – BeyondTryingToCode

+0

@BeyondTryingToCode, veuillez vérifier ma solution EDIT maintenant et laissez-moi savoir si cela vous aide, là vous pouvez ajouter/modifier les valeurs que vous souhaitez remplacer, laissez-moi savoir sur le même. – RavinderSingh13