Cookies op Tweakers

Tweakers is onderdeel van DPG Media en maakt gebruik van cookies, JavaScript en vergelijkbare technologie om je onder andere een optimale gebruikerservaring te bieden. Ook kan Tweakers hierdoor het gedrag van bezoekers vastleggen en analyseren. Door gebruik te maken van deze website, of door op 'Cookies accepteren' te klikken, geef je toestemming voor het gebruik van cookies. Wil je meer informatie over cookies en hoe ze worden gebruikt? Bekijk dan ons cookiebeleid.

Meer informatie
Toon posts:

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

Pagina: 1
Acties:

Vraag


  • bucovaina89
  • Registratie: juli 2010
  • Laatst online: 15-06 09:33
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: 16-06 07:38
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: 16-06 07:38
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: 15-06 09:33
Inderdaad, even getest en die werkt :)

Vielen Dank!


Apple iPad Pro (2021) 11" Wi-Fi, 8GB ram Microsoft Xbox Series X LG CX Google Pixel 5a 5G Sony XH90 / XH92 Samsung Galaxy S21 5G Sony PlayStation 5 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 - 2021 Hosting door True