Substitua uma linha por outro conteúdo usando sed e paralelo para um arquivo grande

2

Eu tenho um arquivo grande (50G) e gostaria de substituir as linhas que começam com o conteúdo da variável $i com o conteúdo da variável $newline usando o comando parallel .

Meu script é fornecido abaixo

#!/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 

Não está funcionando para mim, apenas excluindo a linha.

    
por Juhan 01.08.2018 / 11:07

1 resposta

3

Acho que seu problema está aqui:

'sed -i /^$i/d'

Tente isto:

"sed -i /^$i/d"

A variável $i não pode ser expandida porque é agrupada em aspas simples, trocá-las por aspas duplas permite que o Bash as expanda com sua variável $i .

    
por 01.08.2018 / 11:17