. Чтобы поймать все эти ситуации, используя set(), мы можем искать линии, которые существуют только of (all) x, A, B. Эти, мы можем быть положительными, являются первыми линиями наших пар.
Таким образом, мы получаем в python:
#!/usr/bin/env python3
f = "/path/to/file"
printresult = False
for l in open(f):
if printresult == True:
print(l[i[0]:i[1]])
printresult = False
elif set(l.strip()) == {"A", "x", "B"}:
i = [l.index("A"), l.index("B") + 1]
printresult = True
Таким образом, вывод:
будет:
7890MNOP
34567890MNOPQRST
x234567890MNOPQR
Не совсем. Поскольку вы использовали якорь $, вы ищете строки, которые заканчиваются сразу после строки ac, поэтому сопоставляются только строки, содержащие ровно один ac и больше символов.
Чтобы разрешить любые символы между этими буквами, используйте регулярное выражение для любого количества любых символов: .* (или если вы хотите разрешить только один символ, как в abc в примере, используйте . без $ anchor как *.)
Кстати, вы можете просто оставить параметр -E для этого регулярного выражения, так как он не содержит никакого синтаксиса, который бы отличался в этих двух вариантах.
Итак, результат:
grep '^a.*c$' newfile
Не совсем. Поскольку вы использовали якорь $, вы ищете строки, которые заканчиваются сразу после строки ac, поэтому сопоставляются только строки, содержащие ровно один ac и больше символов.
Чтобы разрешить любые символы между этими буквами, используйте регулярное выражение для любого количества любых символов: .* (или если вы хотите разрешить только один символ, как в abc в примере, используйте . без $ anchor как *.)
Кстати, вы можете просто оставить параметр -E для этого регулярного выражения, так как он не содержит никакого синтаксиса, который бы отличался в этих двух вариантах.
Итак, результат:
grep '^a.*c$' newfile
Не совсем. Поскольку вы использовали якорь $, вы ищете строки, которые заканчиваются сразу после строки ac, поэтому сопоставляются только строки, содержащие ровно один ac и больше символов.
Чтобы разрешить любые символы между этими буквами, используйте регулярное выражение для любого количества любых символов: .* (или если вы хотите разрешить только один символ, как в abc в примере, используйте . без $ anchor как *.)
Кстати, вы можете просто оставить параметр -E для этого регулярного выражения, так как он не содержит никакого синтаксиса, который бы отличался в этих двух вариантах.
Итак, результат:
grep '^a.*c$' newfile