大容量ファイルの場合、sed と並列を使用して 1 行を別の行に置き換えます。

大容量ファイルの場合、sed と並列を使用して 1 行を別の行に置き換えます。

$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

おすすめ記事