Se você quiser usar um pipe , seu script python teria que ler stdin. Seu roteiro não faz isso. Em vez disso, espera um nome de arquivo na linha de comando. Isso pode ser feito usando um recurso de shell chamado substituição de processo para conectar os dois:
script.py <(awk '{if ($4 == 1975) print $1,$2,$3}' input.txt)
<(...)
denota a substituição do processo. O que acontece aqui é que o shell cria um objeto semelhante a um arquivo que contém a saída do comando awk. Esse objeto semelhante a arquivo tem até um nome. Se você executar o script, a saída verá seu nome, passado para python como sys.argv[1]
, é algo como:
/dev/fd/63