mallek-ahmed / Git-Repo

0 stars 0 forks source link

Tri de gros fichiers #19

Open mallek-ahmed opened 1 year ago

mallek-ahmed commented 1 year ago

!/bin/bash

sort_large_file() {

Récupérez les paramètres

local chunk_size="$1" local input_file="$2" local output_file="$3"

Préfixe pour les fichiers temporaires

local prefix="splitfile"

Divisez le fichier en morceaux

split -l "$chunk_size" "$input_file" "$prefix"

Triez les morceaux individuellement

for file in $prefix*; do sort "$file" -o "$file" done

Fusionnez les fichiers triés

sort -m $prefix* -o "$output_file"

Supprimez les fichiers temporaires

rm $prefix* }

Utilisation de la fonction

sort_large_file 1000000 "bigfile.txt" "sortedfile.txt"

mallek-ahmed commented 1 year ago

wc -l fichier.txt

Si vous voulez uniquement le nombre sans le nom du fichier (par exemple pour l'utiliser dans un script), vous pouvez utiliser cut pour ne garder que la première colonne du résultat :

wc -l fichier.txt | cut -d' ' -f1

mallek-ahmed commented 1 year ago

!/bin/bash

Chemin du fichier

file_path="fichier.txt"

Obtenir le nombre de lignes dans le fichier

nb_lignes=$(wc -l $file_path | cut -d' ' -f1)

Créer une nouvelle variable qui est le quart du nombre de lignes

nbr_max=$((nb_lignes / 4))

Afficher les variables

echo "Nombre de lignes: $nb_lignes" echo "Nombre max (1/4 du nombre de lignes): $nbr_max"

mallek-ahmed commented 1 year ago

!/bin/bash

sort_large_file() {

Récupérez les paramètres

local chunk_size="$1" local input_file="$2" local temp_outputfile="temp$3" local output_file="$3"

Préfixe pour les fichiers temporaires

local prefix="splitfile"

Divisez le fichier en morceaux

split -l "$chunk_size" "$input_file" "$prefix"

Triez les morceaux individuellement

for file in $prefix*; do sort "$file" -o "$file" done

Fusionnez les fichiers triés

sort -m $prefix* -o "$temp_output_file"

Supprimez la ligne vide à la fin du fichier

sed -e '$ d' "$temp_output_file" > "$output_file"

Supprimez les fichiers temporaires

rm $prefix* rm "$temp_output_file" }

Utilisation de la fonction

sort_large_file 1000000 "bigfile.txt" "sortedfile.txt"

mallek-ahmed commented 1 year ago

!/bin/bash

sort_large_file() {

Récupérez les paramètres

local chunk_size="$1" local input_file="$2" local output_file="$3"

Préfixe pour les fichiers temporaires

local prefix="splitfile"

Divisez le fichier en morceaux

split -l "$chunk_size" "$input_file" "$prefix"

Triez les morceaux individuellement

for file in $prefix*; do sort "$file" -o "$file" done

Fusionnez les fichiers triés

sort -m $prefix* -o "$output_file"

Supprimez le dernier retour chariot si il existe

truncate -s -1 "$output_file"

Supprimez les fichiers temporaires

rm $prefix* }

Utilisation de la fonction

sort_large_file 10000 testfile.txt sortedfile.txt