我在文件的第三行有<host></host>
。我想用<host>my_dB</host>
替換它。如何使用sed
來做到這一點。我想在第4,5和6行做這樣的替換。替換線的範圍
<host></host>
<host>my_dB</host>
我在文件的第三行有<host></host>
。我想用<host>my_dB</host>
替換它。如何使用sed
來做到這一點。我想在第4,5和6行做這樣的替換。替換線的範圍
<host></host>
<host>my_dB</host>
每個人都可以用類似於這樣做:
sed -i "s/<host><\/host>/<host>my_db<\/host>/" foo.txt
的-i
意味着它會覆蓋就地文件。刪除該標誌以將更改寫入標準輸出。
如果這是一個常規任務來填寫文件的詳細信息,請考慮在文件中添加錨以使其更容易。例如:
<host>DB_HOST</host>
然後sed的將只是需要:
sed -i 's/DB_HOST/my_db/'
我正在使用-i選項,謝謝你.. – Linda 2013-03-11 10:14:56
像這樣:
$ sed '3,6 s/<host>/<host>my_dB/' file
演示:
$ cat file
1: <host></host>
2: <host></host>
3: <host></host>
4: <host></host>
5: <host></host>
6: <host></host>
7: <host></host>
$ sed '3,6 s/<host>/<host>my_dB/' file
1: <host></host>
2: <host></host>
3: <host>my_dB</host>
4: <host>my_dB</host>
5: <host>my_dB</host>
6: <host>my_dB</host>
7:
保存變更回原來的文件然而,你真的應該使用XML解析器使用-i
選項
$ sed -i '3,6 s/<host>/<host>my_bd/' file
。深入分析XML與regexp
是一個壞主意。
標題索要線'3-6'進行修改,但問題只要求'3-5'?應該清楚如何改變給定答案的範圍。 – 2013-03-11 10:18:12
我忘記指定6。原諒我..蘇爾簡短明瞭,謝謝 – Linda 2013-03-11 10:28:50