Corresponder padrão e escrever o seguinte valor como variável

0

Estou tentando corresponder um padrão e, em seguida, puxar as informações a seguir para criar um arquivo usando essa variável.

Exemplo (meus dados podem parecer com os dois exemplos)

"headers": {
            "content-type": "application/octet-stream;\r\n\tname=\"I may have long file names - With lots of spaces.zip\"",
            "content-transfer-encoding": "base64",
            "content-disposition": "attachment;\r\n\tfilename=\"I may have long file names - With lots of spaces.zip\""

ou

"headers": {
            "content-type": "application/octet-stream",
            "content-transfer-encoding": "base64",
            "content-disposition": "attachment; filename=tiny.exe"

Basicamente, estou tentando criar um novo arquivo chamado de nome de arquivo. Portanto, o exemplo 1 tem um nome de arquivo muito longo com espaços e hipens, o exemplo 2 tem um nome de arquivo curto. O exemplo 1 é identificado por 'tfilename' e o exemplo 2 'filename'.

Obviamente, não preciso das aspas duplas.

Alguém pode ajudar com isso, por favor?

Obrigado!

    
por BeMy Friend 20.01.2015 / 22:45

1 resposta

1

Eu consideraria usar uma linguagem que possa analisar o JSON e manipular os dados. Aqui está algum ruby (e shell)

$ cat data.json 
{
    "headers": {
        "content-type": "application/octet-stream;\r\n\tname=\"I may have long file names - With lots of spaces.zip\"",
        "content-transfer-encoding": "base64",
        "content-disposition": "attachment;\r\n\tfilename=\"I may have long file names - With lots of spaces.zip\""
    }
}

$ filename=$(ruby -rjson -e '
    data = JSON.parse(File.read(ARGV.shift))
    m = data["headers"]["content-disposition"].match(/filename=(.+)$/m)
    filename = m[1].gsub(/^"|"$/,"")
    puts filename
' data.json)

$ echo "$filename"
I may have long file names - With lots of spaces.zip
    
por glenn jackman 20.01.2015 / 23:23