Comment supprimer la première colonne ( qui est en fait les noms de lignes) à partir d'un fichier de données sous linux?
J'ai le fichier de données avec plusieurs milliers de colonnes et de lignes. Je veux supprimer la première colonne qui est en fait la ligne de compteur. J'ai utilisé cette commande sous linux:
cut -d " " -f 2- input.txt > output.txt
mais rien n'a changé dans ma sortie. Quelqu'un sait pourquoi il ne fonctionne pas et que dois-je faire?
C'est ce que mon fichier d'entrée ressemble:
col1 col2 col3 col4 ...
1 0 0 0 1
2 0 1 0 1
3 0 1 0 0
4 0 0 0 0
5 0 1 1 1
6 1 1 1 0
7 1 0 0 0
8 0 0 0 0
9 1 0 0 0
10 1 1 1 1
11 0 0 0 1
.
.
.
Je veux mon résultat ressemble à ceci:
col1 col2 col3 col4 ...
0 0 0 1
0 1 0 1
0 1 0 0
0 0 0 0
0 1 1 1
1 1 1 0
1 0 0 0
0 0 0 0
1 0 0 0
1 1 1 1
0 0 0 1
.
.
.
J'ai aussi essayé la sed
commande:
sed '1d' input.file > output.file
Mais il supprime la première ligne pas la première colonne.
Quelqu'un pourrait-il me guider?
votre commande couper fonctionne sur mon portable sous ubuntu avec bash.
La commande ne permet pas de changer quoi que ce soit dans l'entrée, il doit créer le fichier de sortie différents à l'entrée.
Je suppose que vos colonnes ne sont pas séparés par un espace.
J'ai vérifié mon fichier d'entrée. ils sont séparés par l'espace, mais je ne comprends pas pourquoi il y a plusieurs espaces avant d'arriver à la première colonne de mon fichier d'entrée. Cela pourrait-il être un problème et si oui puis-je les supprimer?, J'ai édité mon post pour vous montrer mon véritable entrée ressemble.
La commande ne permet pas de changer quoi que ce soit dans l'entrée, il doit créer le fichier de sortie différents à l'entrée.
Je suppose que vos colonnes ne sont pas séparés par un espace.
J'ai vérifié mon fichier d'entrée. ils sont séparés par l'espace, mais je ne comprends pas pourquoi il y a plusieurs espaces avant d'arriver à la première colonne de mon fichier d'entrée. Cela pourrait-il être un problème et si oui puis-je les supprimer?, J'ai édité mon post pour vous montrer mon véritable entrée ressemble.
OriginalL'auteur zara | 2015-09-27
Vous devez vous connecter pour publier un commentaire.
@Karafka j'avais des fichiers CSV j'ai donc ajouté le "," séparateur (vous pouvez remplacer par le vôtre
Ensuite, j'ai utilisé une boucle pour aller au-dessus de tous les fichiers dans le répertoire
Il pourrait être n'importe quoi au lieu d'un coma, par exemple, dans votre exemple, vous avez un espace", " comme séparateur. Vous pouvez remplacer le "," avec " les ".
Oui, il pourrait être la virgule, mais il ne l'est pas. Il y a aussi un singe d'entrée/sortie de fichier. C'est probablement la bonne réponse pour une autre question, mais je suis à une perte de comprendre pourquoi c'est la réponse sélectionnée pour ce question?
OriginalL'auteur Fouad Djebbar
l'orchestration de coupe sera
si vous le séparateur est de tabulation ("\t").
Ou, simplement avec
awk
de la magie (de travail pour à la fois l'espace et le délimiteur d'onglet)première awk supprimer le champ 1, mais laisse un délimiteur, deuxième awk supprime le délimiteur. De sortie par défaut délimiteur aura de la place, si vous souhaitez changer d'onglet, ajouter
-vOFS="\t"
à la deuxième awk.Mis à JOUR
Basée sur la mise à jour de votre entrée le problème, c'est la première espaces de couper les traite comme plusieurs colonnes. Une façon de répondre est de les enlever d'abord avant de le servir à couper
ou utiliser le
awk
alternative ci-dessus qui travailleront dans ce cas.karakfa merci! pourriez-vous me recommander un moyen de supprimer ces ligne colonne compteur si il n'y a pas tout séparateur entre les différents coulmn? ma moyenne est de savoir si mon entrée ressemble: 10001 20101 30100 40000 50111 alors comment puis-je supprimer les numéros de ligne qui, à mon réel des données est de 1 à 117000?
Si vous êtes sûr que la ligne de numéros de commencer avec le numéro de ligne awk vient à la rescousse! essayez
awk '{sub(NR,"")}1' input
OriginalL'auteur karakfa
Vous pouvez utiliser
cut
de commande avec--complement
option:Ce sera de sortie de toutes les colonnes à l'exception de la première.
Ensuite, vérifiez votre délimiteur comme Cyrus suggère. Il fonctionne pour moi et votre
cut
commande fonctionne aussi pour moi.cut -d' ' -f2- input.file
fait la même chose quecut -f1 -d' ' --complement
sans la saisie de texte supplémentaire.OriginalL'auteur buff