Impossível separar códigos em um arquivo para muitos arquivos em AWK / Python
Pergunta
Eu preciso colocar códigos diferentes em um arquivo para muitos arquivos. O arquivo é aparentemente partilhada por criadores de AWK em sua homepage. O arquivo também é aqui para fácil utilização.
Minha tentativa para o problema
posso obter as linhas, onde cada código de localizar por
awk '{ print $1 }'
No entanto, eu não sei como
- para obter os números de linha exatos para que eu possa usá-los
- para códigos de recolher entre as linhas específicas de modo que a primeira palavra de cada linha é ignorado
- para colocar esses códigos separados em novos arquivos que são nomeados pela primeira palavra na linha
Estou certo de que o problema pode ser resolvido por AWK e com Python também. Talvez, precisamos usá-los juntos.
[editar] após a primeira resposta ??p>
Eu recebo o seguinte erro quando tento executá-lo com awk
$awk awkcode.txt
awk: syntax error at source line 1
context is
>>> awkcode <<< .txt
awk: bailing out at source line 1
Solução
Você tentou:
- Criar um unbundle.awk arquivo com o seguinte conteúdo:
$ 1 = prev {close (prev!); prev = $ 1} {Print substr (US $ 0, índice (US $ 0, " ") + 1)> $ 1}
-
Remova as seguintes linhas formam a awkcode.txt arquivo:
# Unbundle - um pacote descompactar em arquivos separados
$ 1 = prev {close (prev!); prev = $ 1} {Print substr (US $ 0, índice (US $ 0, " ") + 1)> $ 1}
- Execute o seguinte comando:
awk -f unbundle.awk awkcode.txt
Outras dicas
Você está tentando descompactar um arquivo nesse formato? É um tipo de arquivo de shell. Para mais informações, consulte http://en.wikipedia.org/wiki/Shar
Se você executar esse programa com awk, o awk irá criar todos os arquivos. Você não precisa escrever ou reescrever muito. Você pode simplesmente executar esse programa awk, e deve ainda trabalho.
Em primeiro lugar, consulte o arquivo no formato "simples". http://dpaste.com/12282/plain/
Em segundo lugar, salvar a versão simples do arquivo como 'awkcode.shar'
Em terceiro lugar, eu acho que você precisa usar o comando a seguir.
awk -f awkcode.shar
Se você quiser substituí-lo com um programa de Python, seria algo como isto.
import urllib2, sys
data= urllib2.urlopen( "http://dpaste.com/12282/plain/" )
currName, currFile = None, sys.stdout
for line in data:
fileName, _, text= line.strip().partition(' ')
if fileName == currName:
currFile.write(line+"\n")
else:
if currFile is not None:
currFile.close()
currName= fileName
currFile= open( currName, "w" )
if currFile is not None:
currFile.close()
Awk arquivo awkcode.txt não deve conter qualquer linha em branco. Se qualquer linha em branco é encontrado, o programa awk falhar. Não há nenhuma verificação de erro para filtrar linha em branco no código. Isso eu poderia descobrir depois de vários dias de luta.