Isso seria muito mais curto, se eu soubesse como fazer várias substituições de pesquisa no sed. eu não. Ah bem. depois disso, ficou bobo. sem awk necessário. Estou supondo que seu arquivo de dados é chamado bs.dat e que você deseja um csv para migrar para um sistema de banco de dados real mais tarde. saída para um arquivo html incrível também ... pode precisar de algum css. Essa saída ruim é compatível com html5. (como é)
#!/bin/bash
touch me lel.html
rm me lel.html
touch me p1 p2 p3 p4 lel.html
#Fix BS data make a proper csv
c=","
#remove spaces
cat bs.dat | sed 's/ //g' > p1
#remove Name:
cat p1 | sed 's/Name://g' > p2
#Remove age:
cat p2 | sed 's/age://g' > p3
#remove tagid:
cat p3 | sed 's/tagid://g' > p4
#make a csv
file=p4
i=1
while read line
do
if [ "$i" = "1" ]; then
l1=$line$c && i=2
elif [ "$i" = "2" ]; then
l2=$l1$line$c && i=3
elif [ "$i" = "3" ]; then
l3=$l2$line >> me && i=1 && echo $l3 >> me
else
echo "something went wrong: $line"
exit
fi
done <"$file"
rm p1 p2 p3 p4
#Cool now we have a proper csv for later when we need to migrate to a real database
#ok lets make some html
touch lel.html
echo "<!DOCTYPE html><html><head><meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">" > lel.html
echo "<meta content=\"code, bash, lolz\" name=\"keywords\" /><title>IDK what</title></head><body>" >> lel.html
echo "<pre>Name Age ID " >> lel.html
while IFS=, read col1 col2 col3
do
echo "$col1 $col2 $col3" >> lel.html
done < me
echo "</pre></body></html>" >> lel.html
firefox lel.html
Dado que você tem um arquivo de dados grande, você pode optar por remover os arquivos p1-p4 anteriormente. a saída CSV será um arquivo menor, assim como todas as saídas consecutivas, mas é disco intensivo, fiz esforço Zero para a eficiência & amp; conservação de uso de recursos.
Além disso: os nomes serão empurrados juntos. Espere, não vejo FirstName LastName nestes dados. Eu suponho que eles realmente existem, mas foram omitidos por simplicidade ... Há uma correção simples para isso, usando REGEX. onde existe [a-z] [A-Z] no valor da primeira coluna, insira um espaço