false###File.txt
many rows
###online = false --> ONE SHOT import (delete all table contents before importing)
###online = true --> DIFFERENTIAL import (import without clean the table contents)
###online = true
many rows
オンラインで行のみを選択してtrueをfalseに置き換えたいのですが、3行である必要はなく、ファイルのどこにでも表示できます。
私の試み:test.sh
online=true
perl -i -p -e "s/^(online[ ]*=[ ]*).*$/\1 $online/" File.txt
アクションを実行しますが、falseの前にスペースを追加します。誰かがtrueという単語の前にスペースを追加しないように上記のコマンドを変更できますか?
ベストアンサー1
あなたは試すことができますsed
:
sed -i '3s/true/false/' file.txt
元のファイルを次のように保持したい場合file.txt.bak
:
sed -i.bak '3s/true/false/' file.txt
また、同じ行に複数回表示されるwithを置き換えるには、次の手順を実行しますtrue
。false
sed -i.bak '3s/true/false/g' file.txt
編集する:あなたの明確な質問に従って以下を試してください。
sed -i.bak '/DIFFERENTIAL\|[^t][^r][^u][^e]$/!s/true/false/' file.txt
これにより、「DIFFERENTIAL」のない行と、行の末尾に「true」が表示される行で、「true」が「false」に置き換えられます。