Вот скрипт gawk, который я просто взбивал для вас!
#!/usr/bin/gawk -f
BEGIN {
FS="\""
output=""
nodata=1
}
/^"data"/{
if( ! nodata )
{
gsub("|$","",output)
print output
nodata=0
}
output=""
}
/^"[^d][^a][^t][^a]/{
if ( $2 == "to" || $2 == "fromfull" || $2 == "id" || $2 == "subject" || $2 == "date" )
output=output$4"|"
}
END{
gsub("|$","",output)
print output
}
Он должен работать с файлом с кучей похожих записей. Если вы хотите добавить другие элементы в список, просто добавьте их в оператор if. Я обнаружил одну проблему с вашим набором данных: даты. Они содержат запятые, поэтому это не может быть истинным CSV. Вместо этого я просто разделил его на другой символ.