我有一个正在修改文件的 bash 脚本。我有一个 sed 会去寻找一行,并用另一个参数替换它:
sed -i 's@.leaflet-right {@/.leaflet-left {@g' "$<Path_to_my_file...>"
但是我想找到包含的行.leaflet-right {
,然后将下一行从修改right: 0;
为left: 0;
#% 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
使用 awk,您可以像这样使用行数:
这将打印发生某些事情的行号(在示例中,它包含 text something
)
awk '/something/ {print NR}'
这将打印上一行的第二个字段
awk -v v1=2 {if (FNR==v1-1) print $2}'
您也许可以组合 sed 和 awk 以获得最终结果。