Первое: если ваши данные в формате JSON (и в большинстве случаев это не так), не надо.
awk не может точно проанализировать JSON - вот и всеПоэтому специализированные инструменты, такие как jsawk
, были написаны как альтернативы.Аналогичным образом, Python поставляется с совместимым парсером CSV, несколькими XML-парсерами, совместимыми с , и другими инструментами, которые будут лучше справляться со стандартизованными форматами, чем все, что было свернуто вручную в awk
.
Для вашего конкретного случая использования модуль requests
даже вызовет для вас анализатор JSON Python, если вы спросите:
queryId = requests.get('https://host/api/v13/clusters/cluster/services/impalaQueries',
verify=false, auth=('user', pass)).json()['queryId']
Второе: если вы действительно захотитеinvoke awk
, используйте модуль subprocess
.
response = '''
ignore this line
queryId foo
ignore this line also
'''
from subprocess import Popen, PIPE
p = Popen(['awk', '-F:', '/queryId/'], stdin=PIPE, stdout=PIPE)
(output, _) = p.communicate(response)
print(output)
... правильно выбрасывает только:
queryId foo