Я хотел бы сделать следующую замену
sed 's/$/)/' python2.py
с условием, что строка содержит print(
, но не может содержать print("""
.
Строка, которой должно не соответствовать, будет
print("""Some multi line text etc...
Хотя такие строки должны совпадать
print("Some single line text"
Теперь легко сопоставить одно или исключить другое, но мне не удается объединить оба условия в одну команду. Например
sed -ne '/print(/s/$/)/p' python2.py
Соответствует всем строкам с print(
, а также тем, которые я хотел бы опустить с print("""
. С другой стороны, я могу пропустить все строки с print("""
с
sed -ne /print("""/! s/$/)/p python2.py
Но это включает в себя все остальные строки, даже без print(
. Есть ли способ объединить оба условия, чтобы замена применялась только тогда, когда оба условия верны для строки?
В качестве примечания:
Я знаю, что я могу выполнить два запуска sed, где я сначала делаю замены для всех строк print(
, а затем выполняю второй запуск sed, где я удаляю недавно замененные )
только в строках print("""
. Я хотел бы знать, можно ли сделать это за один раз, так что это не ответ, который я ищу.
print("Some single line text")
- person anubhava   schedule 18.01.2021