GNU/Linux >> Linux Esercitazione >  >> Linux

Come mescolare le linee in un file in Linux

Dal momento che è già stabilito che il sistema operativo Linux è il tuttofare informatico attraverso i numerosi suggerimenti e articoli sulla riga di comando di Linux che hai trovato su questo sito.

È tempo di accrescere ulteriormente la reputazione di questo sistema operativo. Come parte della gestione dei file Linux, esamineremo modi per mescolare le righe in un file che risiede in un ambiente del sistema operativo Linux.

Riordinare le righe in un file in un ambiente del sistema operativo Linux può richiedere due approcci. Nell'approccio uno, potresti cercare di mischiare/riordinare le righe in un file di destinazione in modo che appaia in un ordine richiesto specifico. In tal caso, viene richiamato un comando di ordinamento.

Nell'approccio 2, non sei consapevole dell'ordine in cui dovrebbero apparire le righe finali nel file di destinazione. In questi casi, un comando shuf è chiamato.

Questo articolo ci guiderà attraverso diverse tecniche Linux di mescolare casualmente le righe in un file in Linux.

Dichiarazione del problema

Avremo bisogno di creare un file di testo di esempio con poche righe a cui faremo riferimento durante l'implementazione e l'esecuzione di vari comandi di mescolamento Linux da discutere.

$ sudo nano sample_file.txt

Possiamo usare il comando cat per la vista numerata di questo intero file:

$ cat -n sample_file.txt

Il comando cat l'output ci dice che abbiamo a che fare con un file di testo con un totale di 15 Linee. Inoltre, come avrai notato, righe 12 a 14 sono ripetitivi. L'occorrenza di queste tre righe ci aiuterà a capire come funzionano i diversi comandi di mescolamento.

Rimescolamento delle righe utilizzando il comando Shuf in Linux

Dal momento che le GNU Coreutils host del pacchetto shuf comando, dovrebbe essere installato per impostazione predefinita nella distribuzione del tuo sistema operativo Linux. La funzione principale di shuf il comando consiste nel generare permutazioni casuali in base a un input fornitogli.

Il meccanismo di funzionamento di shuf il comando è il seguente; prima carica i dati di input in memoria, fa riferimento se la memoria libera è maggiore dei dati di input/dimensione del file prima di procedere con la sua esecuzione.

La sua sintassi è la seguente:

$ shuf [TARGET_INPUT_FILE] 

Nel nostro caso, la sua implementazione sarà la seguente:

$ shuf sample_file.txt

Come puoi vedere, siamo riusciti a mescolare casualmente le righe nel nostro file di testo di esempio. Se esegui shuf comando, ancora e ancora, otterrai ogni volta un risultato diverso:

$ shuf random_file.txt 

Usa il comando di ordinamento per mescolare le righe in Linux

Mentre il ordinamento comando viene utilizzato principalmente per riorganizzare le righe di un file in un modo specifico, possiamo randomizzare queste righe di file se combiniamo il ordinamento comando con il -R opzione.

$ sort -R sample_file.txt 

L'esecuzione del comando più e più volte dovrebbe produrre risultati diversi ogni volta.

Usa il comando Awk per mescolare le righe di file in Linux

Secondo la sua pagina man di Linux (man awk ), awk è un perfetto linguaggio di programmazione per la scansione di modelli e l'elaborazione del testo. Tuttavia, per comprendere il suo utilizzo nelle righe di rimescolamento, avrai bisogno di una certa esposizione a concetti di programmazione come variabili, loop (while loop) e istruzioni (if istruzione) come mostrato di seguito:

awk 'BEGIN{srand() }
{ lines[++d]=$0 }
END{
    while (1){
    if (e==d) {break}
        RANDOM = int(1 + rand() * d)
        if ( RANDOM in lines  ){
            print lines[RANDOM]
            delete lines[RANDOM]
            ++e
        }
    }
}' sample_file.txt

Ora siamo a nostro agio con la mescolanza delle righe in un file in Linux.


Linux
  1. Comando file Linux:come determinare il tipo di file in Linux

  2. Come salvare l'output dei comandi in un file in Linux

  3. Come visualizzare righe specifiche di un file nella riga di comando di Linux

  4. Comando wc Linux

  5. Come contare il numero di righe in un file in Linux (esempi di comandi wc e nl)

Come utilizzare un comando file in Linux

Come aprire un file in Linux

Come stampare righe duplicate in un file di testo in Linux

Come invertire le righe in un file in base al carattere in Linux

Come usare il comando lsof in Linux

Come utilizzare il comando shred Linux