Search

搜尋一行並替換行

  • March 20, 2015
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 之前添加空格

你可以試試sed

sed -i '3s/true/false/' file.txt

如果要將原始文件保留為file.txt.bak

sed -i.bak '3s/true/false/' file.txt

此外,如果您想在同一行中替換多次出現的truewith :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”。

引用自:https://unix.stackexchange.com/questions/190691