SEDを無視して交換

SEDを無視して交換

テキストファイルに多くの行があるので、1行のスクリプトを使用してtrue値を変更したいと思います。false

bash-3.2$ grep online test.txt
# online = false --> ONE SHOT import (delete all table contents before importing)
# online = true  --> DIFFERENTIAL import (import without clean the table contents)
online =  true

私はこれを試しました

sed -i.bak '/DIFFERENTIAL\|/ONE SHOT\/!s/online.*/online = false/g'

ただし、次のエラーが発生します。

sed: -e expression #1, char 17: unknown command: `O'

online = true最初の2行は変更せず、3行目だけを変更したいと思いますonline = false。ファイルのどこにでも存在できますが、一致しますonline =。だから私はコマンドが1と2を無視して3だけ変更するようにしたいと思います。

ベストアンサー1

で始まる行だけを変更するには、online次のようにするのが最も簡単です。

sed 's/^online\ *=.*/online = false/g'

これにより、始まる行は#完全に無視されます。

@mikeservが提案したより単純だが同じではない代替案は次のとおりです。

sed '/^online/s/true/false/'

おすすめ記事