J'ai plusieurs fichiers qui contiennent des informations textuelles ASCII dans les 5-10 premières lignes, suivies d'informations matricielles bien tabulées. Dans un script shell, je souhaite supprimer ces premières lignes de texte afin de pouvoir utiliser les informations de matrice pures dans un autre programme. Comment puis-je utiliser les commandes du shell bash pour faire cela?
Si cela peut vous aider, j'utilise RedHat et un système Linux Ubuntu.
sed -i -e 1,3d yourfile
. Cela ne fera écho à rien, cela modifiera simplement le fichier sur place. Si vous n'avez pas besoin de diriger le résultat vers une autre commande, c'est plus simple.sed -i
particulier. La plupart des implémentations suppriment simplement le fichier et le remplacent par un nouveau fichier, ce qui ne fonctionne pas pour les liens car vous laissez l'original à son autre emplacement.sed -i '1,3d' file.txt
Cela supprime les 3 premières lignes de fichier.txt.
la source
Si les lignes tabulées sont celles qui ont un caractère de tabulation:
(
␉
étant un caractère de tabulation littéral) ou équivalentDans un script bash / ksh / zsh, vous pouvez écrire
$'\t'
pour un onglet, par exemplegrep $'\t'
oused -n $'/\t/p'
.Si vous souhaitez éliminer 10 lignes au début du fichier:
(notez que c’est
+11
pour éliminer 10 lignes, car cela+11
signifie «commencez à partir de la ligne 11» et les numéros de queue de 1) ouSous Linux, vous pouvez utiliser l'
-i
option de GNU sed pour modifier les fichiers en place:Ou vous pouvez utiliser une boucle shell et des fichiers temporaires:
Ou si vous ne voulez pas modifier les fichiers à la place, mais leur donner un nom différent:
la source
Vous pouvez utiliser Vim en mode Ex:
1
passer à la première ligne5
sélectionnez 5 lignesd
effacerx
sauver et fermerla source
echo "a \ nb" | sed '1d' # supprime la première ligne
cat list.txt | sed '1d'> list.csv # lit le fichier list.txt et écrit le fichier list.csv sans la première ligne
Autres commandes utiles:
grep '^ |' # trouve le premier caractère (pipe |)
sed 's / | // g' # supprime le tuyau
sed 's / // g' # supprime l'espace
la source
En pourcentage
En utilisant
bash
, pour nettoyer un fichier en utilisant un pourcentage, au lieu d’un nombre absolu de lignes:Faites attention, car cette commande peut être destructive car elle supprime le contenu sur place, sans créer de copie.
Il supprime les premiers 75% de lignes du fichier mentionné.
la source