我有一个正在修改文件的bash脚本。 我有一个sed会去找一条线,并用另一个参数替换它:
sed -i 's@.leaflet-right {@/.leaflet-left {@g' "$<Path_to_my_file...>"
但我希望找到包含.leaflet-right {
的行,然后修改从right: 0;
到left: 0;
的下一行
答案 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的组合。