2013-03-01 96 views
0

如何替換以文本開頭的文件中的行aaa我不知道該行在哪裏。替換文件中的行

files.txt:

sadasd_dsada = (aa,bb,cc) 
aaa = (aa,bb,cc) 
sadasd_dsada = (aa,bb,cc) 

替換:

aaa = (aa,bb,cc) 

爲:

aaa = (dd,ee,ff) 
+2

我可能會使用'sed'但它取決於你想怎麼改就行了。你是否需要從舊線的價值來形成新的線? – hwatkins 2013-03-01 15:42:23

回答

7

最簡單的方法是做sed替代:

$ sed 's/^aaa = (aa,bb,cc)$/aaa = (dd,ee,ff)/' file 
sadasd_dsada = (aa,bb,cc) 
aaa = (dd,ee,ff) 
sadasd_dsada = (aa,bb,cc) 

字符^$分別與regexp中行的開始和結束相匹配,這意味着替換隻會發生在整行匹配中。

一旦您對更改感到滿意,可使用-i選項來保存迴文件。

$ sed -i 's/^aaa = (aa,bb,cc)$/aaa = (dd,ee,ff)/' file 

編輯:

$ cat file 
sadasd_dsada = (aa,bb,cc) 
aaa = (aa,bb,cc) 
aaa = foo 
sadasd_dsada = (aa,bb,cc) 
aaa = bar 

$ sed 's/^aaa = .*/aaa = (dd,ee,ff)/' file 
sadasd_dsada = (aa,bb,cc) 
aaa = (dd,ee,ff) 
aaa = (dd,ee,ff) 
sadasd_dsada = (aa,bb,cc) 
aaa = (dd,ee,ff) 
+0

謝謝,但我不知道背後是什麼符號「=」:-( – user2093552 2013-03-01 16:02:13

+0

這沒問題,請參閱編輯。 – 2013-03-01 16:04:21