대용량 파일의 경우 sed 및 병렬을 사용하여 한 줄을 다른 줄로 바꿉니다.

대용량 파일의 경우 sed 및 병렬을 사용하여 한 줄을 다른 줄로 바꿉니다.

$i나는 큰 파일(50G)을 가지고 있고 변수 내용으로 시작하는 줄을 바꾸는 명령을 사용하고 싶습니다 .$newlineparallel

내 스크립트는 다음과 같습니다

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

나에게는 효과가 없습니다. 그냥 줄을 제거하십시오.

답변1

나는 당신의 문제가 여기에 있다고 생각합니다 :

'sed -i /^$i/d'

이 시도:

"sed -i /^$i/d"

변수는 $i작은따옴표로 묶여 있기 때문에 확장할 수 없습니다. 큰따옴표로 전환하면 Bash가 변수를 사용하여 변수를 확장할 수 있습니다 $i.

관련 정보