Сопоставьте Pattern и запишите следующее значение как переменную
Я пытаюсь сопоставить шаблон, а затем получить следующую информацию, чтобы создать файл с использованием этой переменной.
Пример (мои данные могут выглядеть как один из двух примеров)
"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\""
или же
"headers": {
"content-type": "application/octet-stream",
"content-transfer-encoding": "base64",
"content-disposition": "attachment; filename=tiny.exe"
В основном я пытаюсь создать новый файл с именем в качестве имени файла. Так, в примере 1 действительно длинное имя файла с пробелами и переносами, в примере 2 короткое имя файла. Пример 1 идентифицируется как "tfilename", а пример 2 "имя файла".
Очевидно, мне не нужны двойные кавычки.
Кто-нибудь может помочь с этим, пожалуйста?
Спасибо!
1 ответ
Я хотел бы рассмотреть возможность использования языка, который может анализировать JSON и манипулировать данными. Вот какой-то рубин (и оболочка)
$ 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