Вы можете открыть zip-файл в сеансе Python, используя zf = zipfile.ZipFile(filename, 'r', allowZip64=True)
, и после открытия вы можете открыть для чтения любой файл внутри zip-архива, прочитать строки и т. д. из него, как если бы это был обычный файл..
Попробуйте
sed '/^create_test/ {N; /psfxxx/ s/^/#/}' file
#create_test -type hard -outer { 1.0000 } { \
psfxxx_16_pi/psfop/deadline_north_re_0 }
#create_test -type hard -outer { 0.0000 } { \
psfxxx_16_pi/psfop/deadline_south_re_1 }
create_test -type hard -outer { 1.0000 } { \
vsfxxx_16_pi/psfop/deadline_north_re_0 }
create_test -type hard -outer { 0.0000 } { \
vsfxxx_16_pi/psfop/deadline_south_re_1 }
При встрече с «create _test» добавляется следующая строка, а если она содержит «psfxxx», добавляется префикс «#».
Другой sed
способ:
$ sed -zE 's/create_test([^\n]*\n[^\n]*psfxxx_16_pi)/#create_test\1/g' file
#create_test -type hard -outer { 1.0000 } { \
psfxxx_16_pi/psfop/deadline_north_re_0 }
#create_test -type hard -outer { 0.0000 } { \
psfxxx_16_pi/psfop/deadline_south_re_1
Если подойдет awk:
awk '/psfxxx_16_pi/{prev = "#" prev} {print prev} {prev = $0} END {print}'
Здесь я печатаю предыдущую строку (, сохраненную в prev
), для каждой строки и сохраняю $0
для следующей итерации в prev
. Если строка совпадает, я добавляю #
к prev
. В конце выведите последнюю строку.