2013-02-07 34 views
1

我有一個修改文件的bash腳本。 我有一個sed,將去尋找一條線,並用另一個說法取代它:bash腳本查找行並修改下一行

sed -i '[email protected] {@/.leaflet-left {@g' "$<Path_to_my_file...>" 

不過,我想,而不是找到包含.leaflet-right {行,然後修改從right: 0;下一行left: 0;

回答

2
#% cat tester 
blah 
blah 
.leaflet-right { 
right: 0; CHANGE 
right LEAVE 
blah 
blah 

然後

sed '/.leaflet-right/{n;s/right/left/;}' < tester 

blah 
blah 
.leaflet-right { 
left: 0; CHANGE 
right LEAVE 
blah 
blah 
+0

嗯,好吧,我在做這一切: VAL1 ='的awk「{/.leaflet-right/{打印NR} '「$ <文件路徑>」 editline1 = $(expr $ val1 + 1) appendval1 =「left:0;」 sed -i「$ {editline1} s/\ $/$ {appenval1} /」「$ <文件路徑>」 但是您的解決方案要好得多,thx! – Bwyss

+0

這是有幫助的http://www-rohan.sdsu.edu/doc/sed.html – sotapme

1

使用awk,您可以使用行數是這樣的:

這將打印在有事行的行號(在本例中,它包含文本something

awk '/something/ {print NR}' 

這會從上一行

awk -v v1=2 {if (FNR==v1-1) print $2}' 

你也許可以做的sed和awk組合的最終結果打印第二個字段。