Объединение смежных строк по шаблонам без промежуточного файла ?
☑
0
Ковычки
21.08.13
✎
17:58
Есть текст
Content-Disposition: attachment; filename*0*=koi8-r''%F3%CC%D5%D6%C5%C2%CE%C1%D1%20%C4%CC%D1%20%F7%E5%F7.d; filename*1*=oc
Content-Type: application/msword; name*=koi8-r''%F3%CC%D5%D6%C5%C2%CE%C1%D1%20%C4%CC%D1%20%F7%E5%F7.doc
...
...
name*0*=koi8-r''%E4%EB%F0%20%F5%C8%D4%CF%CD%D3%CB%C1%D1%2C7-1%20%D0%D2%D1;
name*1*=%CD%CF%CA.doc
...
...
filename*0*=koi8-r''%E4%EB%F0%20%F5%C8%D4%CF%CD%D3%CB%C1%D1%2C7-1%20%D0;
filename*1*=%D2%D1%CD%CF%CA.doc
как соединить строки по шаблону ;[\t ]*\n*[\t ]*(file){0,1}name\*[0-9]\*=
желательно sed
подстроки могут быть как в соседних строках, так и в одной строке.
(без темпового файла и прочих фифо, не считая создаваемого самим седом)
1
Ковычки
21.08.13
✎
18:18
есть косячный вариант, но хотелось бы повминяемее
sed ':a; N; s/\;[\t ]*\(file\)*name\*[1-9]\*=//g; s/\;\([\t ]*\)\(file\)*name\*\(0\*\)*=/\;\1\2name=/g; ta; s/\;[\t ]*\n\([\t ]*\)\(file\)*name\*\0\*=/\;\n\1\2name=/g; ta; s/\;[\t ]*\n[\t ]*\(file\)*name\*[1-9]\*=//g; ta; s/\([\t ]*\)\(file\)*name\*0\*=/\1\2name=/g;' 1323152506.4380_100.ws075-desktop.eml 1376891174.4365_334.ws075-desktop.eml | less
2
Ковычки
21.08.13
✎
22:29
для разового сделал куязёво без обхода дублей
sed -i -u ':a; N; s/\;[\t ]*\(file\)*name\*[1-9]\*=//g; s/;\([\t ]*\)\(file\)*name\*\(0\*\)*=/;\1\2name=/g; s/\;[\t ]*\n\([\t ]*\)\(file\)*name\*\(0\*\)*=/\;\n\1\2name=/g; s/\;[\t ]*\n[\t ]*\(file\)*name\*[1-9]\*=//g; s/\([\t ]*\)\(file\)*name\*\(0\*\)*=/\1\2name=/g; ta; s/\([\t ]*\)\(file\)*name=koi8-r\x27\x27/\1\2name="=?koi8-r?Q?/g; s/\;\([\t ]*\)\(file\)*name=/;\n \2name=/g; /\([\t ]*\)\(file\)*name=/s/%\([0-9A-F][0-9A-F]\)/=\1/g; :z; s/\(\(file\)*name="=?koi8-r?Q?\)\([=a-zA-Z0-9\_\x2d\.]*\)/\1\3?="/g;' *.eml
Компьютеры — прекрасное средство для решения проблем, которых до их появления не было.