GNU/Linux >> Znalost Linux >  >> Linux

Nahradit řádek jiným obsahem pomocí Sed And Parallel pro velký soubor?

Mám velký soubor (50G) a rád bych nahradil řádky začínající obsahem proměnné $i s obsahem proměnné $newline pomocí parallel příkaz.

Můj skript je uveden níže

#!/bin/sh 
File="test.txt"
i="foo"
newline="helooooooo"

parallel -a $File -k --block 30M --pipe-part 'sed -i /^$i/d' $File
echo $newline >> $File 

Nefunguje mi to, pouze smažu řádek.

Přijatá odpověď:

Myslím, že váš problém je zde:

'sed -i /^$i/d'

Zkuste toto:

"sed -i /^$i/d"

Proměnná $i nelze rozšířit, protože je zabaleno do jednoduchých uvozovek. Přepnutí na dvojité uvozovky umožňuje Bashovi rozšířit je pomocí vaší proměnné $i .


Linux
  1. Nahradit rozsah řádků rozsahem řádků (sed nebo jiné)?

  2. Nahradit řádky odpovídající vzoru řádky z jiného souboru v pořadí?

  3. Jak změnit soubor na místě pomocí awk? (jako u sed -i)

  1. Kódovat obsah souboru a echovat jej jako jeden řádek?

  2. Jak nahradit text podobný sedu pythonem?

  3. nahradit řádky v jednom souboru řádky v jiném číslem řádku

  1. Použití grep a sed k nalezení a nahrazení řetězce

  2. Najít a nahradit sed v adresáři a podadresářích

  3. Nahraďte slovo jiným v bash