GNU/Linux >> Linux Esercitazione >  >> Linux

Come suddividere un file come Dividi in Stdout per eseguire il piping su un comando?

Ho un grande .sql file pieno di SELECT istruzioni che contengono dati che voglio inserire nel mio database di SQL Server. Sto cercando come potrei sostanzialmente prendere il contenuto del file, 100 righe alla volta, e passarlo ai comandi che ho impostato per fare il resto.

Fondamentalmente, sto cercando split che verrà restituito a stdout , non file.

Sto usando CygWin anche su Windows, quindi non ho accesso alla suite completa di strumenti.

Risposta accettata:

Penso che il modo più semplice per farlo sia:

while IFS= read -r line; do
  { printf '%sn' "$line"; head -n 99; } |
  other_commands
done <database_file

Devi usare read per la prima riga di ogni sezione poiché sembra che non ci sia altro modo per fermarsi quando viene raggiunta la fine del file. Per ulteriori informazioni, vedere:

  • Verifica se la pipe è vuota ed esegui un comando sui dati se non lo sono
  • Come reindirizzare l'output da un processo all'altro ma eseguirlo solo se il primo ha output?

Linux
  1. Come campionare casualmente un sottoinsieme di un file?

  2. Scartare Stdout di un comando per T secondi?

  3. Come dividere iso o file usando il comando "split" in Linux

  4. Come aggiungere l'output a un file?

  5. passare stdout come nome file per la riga di comando util?

Come usare il comando Tronca in Linux

Comando ls in Linux per elencare i file

Come mescolare le linee in un file in Linux

Come usare il comando lsof in Linux

Exa:un moderno sostituto del comando ls

Come utilizzare il comando shred Linux