bash脚本查找行并修改下一行

时间:2013-02-07 09:00:10

标签: bash scripting

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

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

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

使用awk,你可以使用这样的行数:

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

awk '/something/ {print NR}'

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

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

你可以为最终结果制作sed和awk的组合。

相关问题