GNU/Linux >> Linux Esercitazione >  >> Linux

Inserire una nuova riga dopo una sequenza di numeri interrotta Scripting Awk/unix/shell?

Ho un file enorme da elaborare e non sono riuscito a ottenere esattamente ciò di cui ho bisogno.
Tieni presente che non so in anticipo quante volte ciò si verifica in un file (ad esempio, potrebbe accadere> 1000 volte per file ).

Di seguito è riportato il mio file di input (delimitato da TAB), dove $ 1 è il numero di riga. La sequenza spezzata di numeri si verifica a $3:

; 365,0 0,12 0,12 A 0,726

Questo è quello che voglio:

; 1 365,0 0,12 0,12 A 0,726

Questo è il codice che riesco a scrivere finora (il nome del file è test.sh):

awk ' marker=substr($3,2,6) { if (FNR  

Questo è l'output che ho ottenuto finora:

; 365,0 0,12 0,12 A 0,726803 47 M804 1 365,0 0,08 0,08 A 0,777

Se qualcuno ha una soluzione migliore per questo, per favore fatemelo sapere.

Risposta accettata:

Sei stato taggato come awk , si spera che Python sia utile.

Codice:

# !/usr/bin/pythonimport sysdef print_fixed_sequence(filename, line_num=0):con open(filename, 'rU') as f:for line in (x.strip() for x in f) :_, f1, f2, data =line.split('\t', 3) rec_num =int(f2[1:]) while line_num !=rec_num:print(line_num) line_num +=1 print('\t' .join((str(line_num), f1, f2, data))) line_num +=1print_fixed_sequence(sys.argv[1], line_num=795) 

Risultati:

795796797 47 M797 1 365.0 0.05 0.05 A 0.825798 47 M798 1 365.0 0.05 0.05 A 0.825799 47 M799 1 365.0 0.70 0.70 A 0.404800 47 M800 1 365.0 0.00 0.00 A 0.990801802 47 M802 1 365.0 0.29 0.29 A 0.591803 47 M803 1 365,0 0,12 0,12 A 0,726 

Linux
  1. Inserisci più righe di dati in un file dopo le corrispondenze dei modelli utilizzando lo script della shell di Linux

  2. Array in Unix Bourne Shell?

  3. Usare i tasti Vi per modificare i comandi della shell in Unix?

  4. Come analizzare Json con lo script della shell in Linux?

  5. La dichiarazione blocca il meccanismo nello scripting della shell?

Come utilizzare le variabili negli script della shell

Shell Scripting Parte V:Funzioni in Bash

Che cos'è Shebang negli script della shell di Linux?

Tutorial passo passo sullo scripting della shell

Comando AWK in Linux/Unix

Inserisci più righe in un file dopo il modello specificato utilizzando lo script della shell