2010-04-14 3 views
5

J'ai un fichier txt avec des colonnes séparées par des tabulations et basé sur ce fichier, je veux créer un nouveau fichier qui contient uniquement des informations de certaines des colonnes.Comment imprimer les colonnes sélectionnées séparées par des onglets?

C'est ce que j'ai maintenant:

awk '{ print $1, $5 }' filename > newfilename 

Cela fonctionne, sauf que lorsque la colonne 5 contient des espaces 123 Street par exemple, que 123 montre et la rue est considérée comme une autre colonne.

Comment puis-je réaliser ce que j'essaie de faire?

Répondre

4

Vous pouvez spécifier le field separator comme onglet:

awk 'BEGIN { FS = "\t" } ; { print $1, $5 }' filename > newfilename 

Ou from the command line comme ceci:

awk -F"\t" '{ print $1, $5 }' filename > newfilename 
1

Qu'en est simple, coupé COMAND shell?

très simple fait encore le travail

cut -d "\t" -f 1,5 filename > newfilename 
0

Vous pouvez utiliser la syntaxe de Bash de la manière suivante:

while IFS=$'\t' read -a cols; do 
    printf "%s\t%s\n" "${cols[0]}" "${cols[4]}"; 
done <in.txt> newfile.txt 

Cela permettra d'économiser des colonnes 1 et 5 séparées par des onglets dans le nouveau fichier.

Questions connexes