Как установить переменную в AWK [дубликат]

isin() идеально подходит, если у вас есть список точных совпадений, но если у вас есть список частичных совпадений или подстрок, которые вы ищете, вы можете фильтровать с помощью метода str.contains и регулярного выражения.

Например, если мы хотим вернуть DataFrame, где все идентификаторы запаса, начинающиеся с '600', затем сопровождаются любыми тремя цифрами:

>>> rpt[rpt['STK_ID'].str.contains(r'^600[0-9]{3}$')] # ^ means start of string
...   STK_ID   ...                                    # [0-9]{3} means any three digits
...  '600809'  ...                                    # $ means end of string
...  '600141'  ...
...  '600329'  ...
...      ...   ...

Предположим теперь, что мы имеем список строк, которым мы хотим, чтобы значения в 'STK_ID' заканчивались, например

endstrings = ['01$', '02$', '05$']

. Мы можем присоединить эти строки с помощью регулярного выражения или символа | и передать string в str.contains для фильтрации DataFrame:

>>> rpt[rpt['STK_ID'].str.contains('|'.join(endstrings)]
...   STK_ID   ...
...  '155905'  ...
...  '633101'  ...
...  '210302'  ...
...      ...   ...

Наконец, contains может игнорировать регистр (установкой case=False), позволяя вам быть более общим при указании строк, которые вы хотите сопоставить .

Например,

str.contains('pandas', case=False)

будет соответствовать PANDAS, PanDAs, paNdAs123 и т. д.

3
задан miku 14 August 2013 в 01:18
поделиться

1 ответ

awk '/^PermitRootLogin yes$/{f=1} /^Match/{exit} END{exit !f}' /etc/ssh/sshd_config
2
ответ дан Ed Morton 22 August 2018 в 23:31
поделиться
  • 1
    Спасибо, работает отлично! Если бы вы могли объяснить мне, как это работает, я буду благодарен. – user1234242 14 August 2013 в 14:24
  • 2
    Если он найдет строку Permit..., он устанавливает флаг f, чтобы сказать это. Если он найдет Match, он перестает читать входной файл. При выходе из скрипта он устанавливает статус выхода 0, если установлен флаг f, 1 в противном случае. Обратите внимание, что exit в главном корпусе awk означает take me to the END section, а exit в секции END означает quit the program with the specified exit status. – Ed Morton 14 August 2013 в 14:42
Другие вопросы по тегам:

Похожие вопросы: