1

我有一个正在修改文件的 bash 脚本。我有一个 sed 会去寻找一行,并用另一个参数替换它:

sed -i 's@.leaflet-right {@/.leaflet-left {@g' "$<Path_to_my_file...>"

但是我想找到包含的行.leaflet-right {,然后将下一行从修改right: 0;left: 0;

4

2 回答 2

3
#% 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
于 2013-02-07T10:30:45.777 回答
1

使用 awk,您可以像这样使用行数:

这将打印发生某些事情的行号(在示例中,它包含 text something

awk '/something/ {print NR}'

这将打印上一行的第二个字段

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

您也许可以组合 sed 和 awk 以获得最终结果。

于 2013-02-07T09:16:30.480 回答