11
votes

Utiliser AWK pour "supprimer" le texte indésirable du fichier csv

J'ai un fichier CSV comme ceci: xxx

où la date est une colonne entière. Comment puis-je supprimer toute la partie "heure de la lumière du jour de l'Est" de la chaîne avec AWK?


0 commentaires

4 Réponses :


3
votes

Vous voulez donc seulement la 1ère et la 2ème colonne? Si oui xxx


2 commentaires

En fait, la date est tout dans une colonne. Le fichier comporte deux colonnes totales, alors j'ai besoin de "filtrer" cette deuxième colonne.


S'il s'agit d'un CSV, séparé par des virgules, vous voulez probablement 1 $ "," 2 $ mais oui. +1.



11
votes

Basé sur votre commentaire dans la réponse de Piotrsz, c'est ainsi que vous pouvez supprimer la partie EDT:

awk '{gsub("Eastern Daylight Time", "");print}' file.csv


1 commentaires

Ça ressemble à ça. J'étais juste au milieu de demander à Dcrawmer de remplacer ses virgules dans les données pour être sûr.



7
votes

Je ne sais pas Awk, mais une version SED serait

sed "s/ Eastern Daylight Time//" file.csv


1 commentaires

Ceci suit ma règle générale d'essayer d'abord SED, puis awk, puis une langue compilée complète.



3
votes

Utiliser uniquement la coque

while read -r line
do
    case "$line" in
        *Eastern* )
            echo "${line%%Eastern*}"
            ;;
        *) echo "${line}"
    esac
done < "file"


0 commentaires