J'ai un fichier texte.
number 1_1 \t number1_2 \t etc
number 2_1 \t number2_2 \t etc
Je souhaite supprimer la première colonne de ce fichier (correspondant à numéro1_1, numéro2_1, etc., c'est-à-dire aux nombres précédant le premier onglet pour chaque ligne). J'ai lu cet article qui propose une solution pour supprimer la première colonne (voir la réponse de Peter). Cependant, cela ne fonctionne pas pour moi car les nombres ont des tailles différentes et je ne peux pas répéter l'opération pour supprimer la première colonne. Comment puis-je faire alors?
Ceci devrait supprimer tous les caractères avant et incluant le 1er onglet sur n'importe quelle ligne:
:%s/^[^\t]*\t//
Ligne de commande cut
:
cut -f 2- {filename.txt} > {filenamenew.txt}
couper par défaut aux onglets; si vous voulez quelque chose d'autre comme un espace, ajoutez -d " "
. -f
est des champs à copier. 2- signifie tout de (et incluant) la colonne 2.
Par awk
,
awk -F"\t" '{print FS,$2}' file > newfile
Il coupe la première colonne et n'imprime que l'onglet restant et la deuxième colonne.
Par sed
,
sed -r 's/^([^\t]*)\t(.*)$/\t\2/g' file > newfile
Sur chaque ligne (%
), remplacez (s/ORIGINAL/REPLACEMENT/
) la première occurrence de "caractères autres que des tabulations ([^\t]
, dans n'importe quel nombre (*
)) suivie d'un tabulation \t
" par rien. Vous pouvez taper Tab au lieu de \t
.
Vous pouvez également faire correspondre la séquence de caractères la plus courte (.\{-}
) se terminant par un onglet. .*\t
correspondrait à la correspondance la plus longue pour .*
, de sorte qu'il correspondrait à toutes les colonnes sauf la dernière; .\{-}
correspond à la correspondance la plus courte qui est la première colonne.
:%s/.\{-}\t//
Dans Vi pour supprimer la première colonne (séparés par un espace), vous pouvez faire:
:%norm dW
pour une colonne séparée par Tab, c'est:
:%norm df
Ctrl+VTab
Ainsi, la commande qui supprimerait la première colonne du fichier (sur place) peut être:
ex +"%norm df$(echo -e '\t')" -scwq file
Pour vérifier le résultat avant de sauvegarder (test à sec), remplacez -scwq
par -sc'%p|q!'
.
Ou basé sur suggestion de Chris , comme:
ex -c':exe ":%norm df\<Tab>"' -sc'%p|q!' <(echo -e "a a\tb b\tc c")
Vous pouvez également le faire en mode visuel (si vous partez du coin supérieur gauche):
Pour supprimer l'espace restant avant la deuxième colonne, je suggère:
:%norm df
Ctrl+VTabx
name__