J'ai un fichier qui est le résultat de la commande comm, il a 2 colonnes, je souhaite séparer ces 2 colonnes en deux fichiers différents, comment puis-je faire cela?
le fichier ressemble à:shellscript obtenir des données de colonne
a b g f c d
J'ai un fichier qui est le résultat de la commande comm, il a 2 colonnes, je souhaite séparer ces 2 colonnes en deux fichiers différents, comment puis-je faire cela?
le fichier ressemble à:shellscript obtenir des données de colonne
a b g f c d
Selon le séparateur de colonne, vous pouvez faire quelque chose comme:
cut -f1 orig_file >file1
cut -f2 orig_file >file2
Ici, le séparateur de colonne est censé être un TAB. S'il s'agit d'un autre caractère, vous pouvez utiliser l'option -d char
pour cut
.
Si vous souhaitez supprimer des lignes vides, selon votre demande, vous pouvez ajouter à chaque ligne une commande sed
:
cut -f1 orig_file | sed -e /^$/d >file1
cut -f2 orig_file | sed -e /^$/d >file2
L'utilisation cut
entraînera une commande pour chaque colonne. Vous pouvez le faire en utilisant awk dans une seule commande.
awk '{for (i=1;i<=NF;i++) print $i>i".txt"}' your_file
Tab est par défaut le séparateur de champs. Incase le séparateur de champ est autre que l'onglet, puis ajouter un drapeau après awk
comme ci-dessous
awk -F"<field separator>" '{....
Vous pouvez couper les parties pertinentes en fonction des indices de caractères:
# assuming constant 5 chars for col1, 5 chars for col2
cat file | cut -c0-5 | sed '/^\s*$/ {d}' > col1
cat file | cut -c6-10 | sed '/^\s*$/ {d}' > col2
Le tuyau sed
supprime les lignes vides (ceux avec seulement des espaces blancs). Ils peuvent également être supprimés avec grep -v '^[[:space:]]*$'
.
Vous n'avez pas à 'chat 'ici. 'cut' peut aussi lire un fichier. –
@Diego: Bien sûr, c'est une question de style. Je trouve ça bien d'avoir toute la manipulation dans les tuyaux. – orip
+1, couper par des séparateurs de champ est préférable si le fichier d'entrée se comporte de cette façon – orip
@Diego Sevilla, comment puis-je supprimer les lignes vides dans les fichiers de résultats? – user881480
@user, voir mon édition. –