Toon posts:

awk en tar output parsen naar csv (spaties in bestandsnaam )

Pagina: 1
Acties:

Vraag


  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 01-10 20:09
Ik heb een awk commando gevonden (bij elkaar gecopy-paste) waarmee ik van tar --verbose --verbose output een csv bestand kan maken dat ik dan weer kan importeren in een SQL database.

van dit (tar output redirected naar een textbestand)
code:
1
-rwxrwxrwx 1028/138862    2769793 2020-06-08 14:57 photo/iphoneplusbackup/IMG_6348.JPG

Maak ik met awk dit (csv die ik ooit wil kunnen importeren in SQL)
code:
1
-rwxrwxrwx,1028/138862,2769793,2020-06-08,14:57,photo/iphoneplusbackup/IMG_6348.JPG


Maar in sommige bestanden zitten - je raadt het al - een of meerdere spaties. Dus met mijn erg beperkte kennis van awk heb ik lompweg dit gedaan:
code:
1
cat 0000003L3.txt | awk -F" " '{ print $1","$2","$3","$4","$5","$6,$7,$8,$9,$10,$11,$12,$13,$14,$15,$17}'

in de veronderstelling dat na veld 5 (de tijd) er niet meer dan 12 spaties in de bestandsnaam zullen zitten. Goed, in 99% van de gevallen zal het w... ... :X . Neen stop, stop stop!!! 8)7 Dit kan beter.

Weet iemand wat ik aan deze regel moet toevoegen om eender hoeveel spaties, dat mooi te catchen? Zodat ik uiteindelijk iets als dit zou krijgen.

code:
1
cat 0000003L3.txt | awk -F" " '{ print $1","$2","$3","$4","$5","}'


code:
1
-rwxrwxrwx,1028/138862,1876729,2020-06-08,14:52,dit bestand is erg lomp gemaakt met erg veel spaties erin ik denk dat je dit niet mooi gaat kunnen parsen met awk tenzij je het echt heel heel heel heel heel erg inventief bent of het vriendelijk en beleefd vraagt op t.net

Beste antwoord (via bucovaina89 op 11-06-2020 16:14)


  • vanaalten
  • Registratie: September 2002
  • Laatst online: 08:58
Ik heb een lompe oplossing, denk ik:
code:
1
cat 0000003L3.txt | awk '{printf("$1,$2,$3,$4,$5,"); $1="";$2="";$3="";$4="";$5="";sub(/^     /,"");print}'


De '-F" "'' was sowieso al overbodig, want de field separator is standaard al whitespace.
Mijn oplossing print dus eerst het stuk dat geen problemen geeft. Dat stuk wordt vervolgens leeg gemaakt (die "$1="";$2=""...). Dan nog met een substitute de spaties weghalen die tussen de velden $1, $2 enzo staan - en dan het restant printen.

Alle reacties


Acties:
  • Beste antwoord
  • +1Henk 'm!

  • vanaalten
  • Registratie: September 2002
  • Laatst online: 08:58
Ik heb een lompe oplossing, denk ik:
code:
1
cat 0000003L3.txt | awk '{printf("$1,$2,$3,$4,$5,"); $1="";$2="";$3="";$4="";$5="";sub(/^     /,"");print}'


De '-F" "'' was sowieso al overbodig, want de field separator is standaard al whitespace.
Mijn oplossing print dus eerst het stuk dat geen problemen geeft. Dat stuk wordt vervolgens leeg gemaakt (die "$1="";$2=""...). Dan nog met een substitute de spaties weghalen die tussen de velden $1, $2 enzo staan - en dan het restant printen.

  • bucovaina89
  • Registratie: Juli 2010
  • Laatst online: 01-10 20:09
Inderdaad, even getest en die werkt :)

Vielen Dank!



Google Pixel 7 Sony WH-1000XM5 Apple iPhone 14 Samsung Galaxy Watch5, 44mm Sonic Frontiers Samsung Galaxy Z Fold4 Insta360 X3 Nintendo Switch Lite

Tweakers vormt samen met Hardware Info, AutoTrack, Gaspedaal.nl, Nationale Vacaturebank, Intermediair en Independer DPG Online Services B.V.
Alle rechten voorbehouden © 1998 - 2022 Hosting door True

Tweakers maakt gebruik van cookies

Tweakers plaatst functionele en analytische cookies voor het functioneren van de website en het verbeteren van de website-ervaring. Deze cookies zijn noodzakelijk. Om op Tweakers relevantere advertenties te tonen en om ingesloten content van derden te tonen (bijvoorbeeld video's), vragen we je toestemming. Via ingesloten content kunnen derde partijen diensten leveren en verbeteren, bezoekersstatistieken bijhouden, gepersonaliseerde content tonen, gerichte advertenties tonen en gebruikersprofielen opbouwen. Hiervoor worden apparaatgegevens, IP-adres, geolocatie en surfgedrag vastgelegd.

Meer informatie vind je in ons cookiebeleid.

Sluiten

Toestemming beheren

Hieronder kun je per doeleinde of partij toestemming geven of intrekken. Meer informatie vind je in ons cookiebeleid.

Functioneel en analytisch

Deze cookies zijn noodzakelijk voor het functioneren van de website en het verbeteren van de website-ervaring. Klik op het informatie-icoon voor meer informatie. Meer details

janee

    Relevantere advertenties

    Dit beperkt het aantal keer dat dezelfde advertentie getoond wordt (frequency capping) en maakt het mogelijk om binnen Tweakers contextuele advertenties te tonen op basis van pagina's die je hebt bezocht. Meer details

    Tweakers genereert een willekeurige unieke code als identifier. Deze data wordt niet gedeeld met adverteerders of andere derde partijen en je kunt niet buiten Tweakers gevolgd worden. Indien je bent ingelogd, wordt deze identifier gekoppeld aan je account. Indien je niet bent ingelogd, wordt deze identifier gekoppeld aan je sessie die maximaal 4 maanden actief blijft. Je kunt deze toestemming te allen tijde intrekken.

    Ingesloten content van derden

    Deze cookies kunnen door derde partijen geplaatst worden via ingesloten content. Klik op het informatie-icoon voor meer informatie over de verwerkingsdoeleinden. Meer details

    janee