Sostituisci stringa con nuova riga + stringa in un file grande

0

Devo sostituire la stringa ),( con )\n,( in un file da 10 GB. Il \ n in questo caso ovviamente sta per una nuova riga. L'ho provato con questo comando:

sed -i '' '/),(/ s//),\n(/g' bigfile.sql

Tuttavia, ciò non ha funzionato come previsto. Ha sostituito la stringa, ma non ha inserito una nuova riga, ma semplicemente una "n" (quindi ha semplicemente trascurato la barra rovesciata e l'ha sfuggita). Qualsiasi altro prende questo, o dov'è il mio errore nel comando precedente?

    
posta Maximilian Krause 03.09.2018 - 00:53
fonte

1 risposta

0

Prova

sed -i '' $'/),(/ s//),\\n(/g' bigfile.sql
  • $'...' indica che la stringa è una stringa in stile C. Ciò ti consente di utilizzare gli escape \ e \n , tra gli altri.
  • Al posto del tuo \n , abbiamo \ e poi \n . Ciò passa a una barra rovesciata letterale e quindi a una nuova riga letterale, a sed . Ciò gli consente di riconoscere che la nuova riga fa parte del modello, invece di terminarlo.

Quanto segue funziona anche:

sed -i '' '/),(/ s//),\
(/g' bigfile.sql
    
risposta data 03.09.2018 - 01:11
fonte

Leggi altre domande sui tag