Jump to content
Sign in to follow this  
Tic-Tac

nepieciešama palīdzība ar "awk"

Recommended Posts

Tic-Tac

Sveiki visiem!

 

Nepieciešams pielāgot komandas izvadi konkrētam formātam, zinu, ka to var izdarīt ar awk, bet diemžēl man nav tādu zināšanu un pieredzes, tāpēc ceru, ka kāds spēs palīdzēt.

 

Mana komanda sniedz šādus rezultātus:

 

echo "\"SHA-1"\","\"MD5"\","\"CRC32"\","\"FileName"\","\"FileSize"\","\"ProductCode"\","\"OpSystemCode"\","\"SpecialCode"\" && find . -type f -exec bash -c 'sha1sum "{}" | cut -d " " -f 1 ' \; -exec bash -c 'md5sum "{}" | cut -d " " -f 1 ' \; -exec bash -c 'crc32 "{}" ' \; -printf "\"%f\"\n%s\n200828\n\"365\"\n\"\"\n"


"SHA-1","MD5","CRC32","FileName","FileSize","ProductCode","OpSystemCode","SpecialCode"
0def05b8190bf7071647175be9f7dd6f94aa5076
6c4c7b8f254c05a3b0f350f45009b520
47ec1eef
"opera.exe"
51805816
200828
"365"
""
4dddefb899720c15caf4f27e9c99ccd458421d2b
1b4dfb401647474610358eed7104eadc
2e4b3c43
"d3dcompiler_47.dll"
3457656
200828
"365"
""

 

Nepieciešams, lai rezultāti tiktu attēloti vienā līnijā, atdalīti ar komatu un sha1, md5 un crc32 būtu iekš pēdiņām, šādi:

 

echo "\"SHA-1"\","\"MD5"\","\"CRC32"\","\"FileName"\","\"FileSize"\","\"ProductCode"\","\"OpSystemCode"\","\"SpecialCode"\" && find . -type f -exec bash -c 'sha1sum "{}" | cut -d " " -f 1 ' \; -exec bash -c 'md5sum "{}" | cut -d " " -f 1 ' \; -exec bash -c 'crc32 "{}" ' \; -printf "\"%f\"\n%s\n200828\n\"365\"\n\"\"\n" | šeit notiek awk maģija

 

"SHA-1","MD5","CRC32","FileName","FileSize","ProductCode","OpSystemCode","SpecialCode"
"0def05b8190bf7071647175be9f7dd6f94aa5076","6c4c7b8f254c05a3b0f350f45009b520","47ec1eef",""opera.exe"",51805816,200828,"365",""

"4dddefb899720c15caf4f27e9c99ccd458421d2b","1b4dfb401647474610358eed7104eadc","2e4b3c43","d3dcompiler_47.dll",3457656,200828,"365",""

 

Aliņš no manis :)

 

 

 

Share this post


Link to post
Share on other sites
AndrisBB

Ai, baigajam konsoles hawkam tur jābūt lai vispār iedziļinātos. Es uzrakstītu Python scriptu un miers.

Share this post


Link to post
Share on other sites
Anonīms Alkoholiķis
Posted (edited)

Pitons vai pat perls tev labāk apstrādās gigabaitīgos NSRL failus. Ar pitonu varēsi testēt uz windows un pēc dažiem mēnešiem, kad iznāks nākamais saraksts, būs vieglāk apstrādāt nākamo paku - nebūs jāmeklē kur konsoles vēsturē tas ir palicis.

 

Tikai kāda jēga pārgremot un atgremot no CSV uz CSV? Vai tiešām gala aplikācija ir tik tupa, ka bez pēdiņām nespēj apstrādāt datus?

Edited by Anonīms Alkoholiķis

Share this post


Link to post
Share on other sites
Tic-Tac

Man nepieciešams veidot savas NSRL formāta datubāzes no piemontētiem imidžiem, programma, kas tālāk man viņas apstrādās man ir, viss darbs notiek uz Linux. 

Share this post


Link to post
Share on other sites
Anonīms Alkoholiķis

Tad kāpēc nevar pielabot rīku ar ko taisīsi tās bāzes, lai nebūtu jātaisa visādas konvertācijas?

Share this post


Link to post
Share on other sites
Tic-Tac

Tu domā par tām pēdiņām? Domāju, ka ar awk tos datus sastrukturizējot tās pēdiņas būtu sīkums pielikt. Varbūt jāpacīnās kaut kā ar printf lai pie outputa uzreiz jau ir tās pēdiņas, bet awk jautājums vienalga būs jārisina, tā kā nezinu cik tas būs lietderīgi.

Share this post


Link to post
Share on other sites
AndrisBB
Posted (edited)

Būtu parādijis kāds ir ienākošais formāts un kādam jābūt izejošam, tad varētu kautko domāt

Edited by AndrisBB

Share this post


Link to post
Share on other sites
Anonīms Alkoholiķis
Posted (edited)

Sapratu problemu ar foruma lasītprasmēm. Viņš taisa bash skriptu, kas uztaisa to izejas failu, bet netiek galā ar izvadi.

 

echo '"SHA-1","MD5","CRC32","FileName","FileSize","ProductCode","OpSystemCode","SpecialCode"'
find -type f -name "*" -exec bash -c '_m=`(/usr/bin/md5sum "{}"|cut -d " " -f 1)`\\; echo "\"$_m\",\"{}\""' \;

 

"5ea2ec7740ac5f2612b6e6c4d12bbadc\","./.bashrc"
"22bfb8c1dd94b5f3813a2b25da67463f\","./.bash_logout"
"3ae54e3f9fa96bc3034b98b2fd30e7a3\","./.bash_history"
"f9baa9c2060c4d19b49169e9e475d133\","./README-cloudshell.txt"
"447ecfc839910103f121085490ad01fc\","./.docker/config.json"
"ecb6d3479ac3823f1da7f314d871989b\","./.profile"
"a7c1f78d096e37034280568ff4abcb89\","./.theia/settings.json"

Reku viens virziens, kā to var risināt. Kaut kur drusu pārrakstījos un ir viena ekstra šķērssvītra. To nāksies pašam novākt. 

Edited by Anonīms Alkoholiķis
  • Atbalstu 1

Share this post


Link to post
Share on other sites
AndrisBB

Nu tur tad laikam jāuzliek sisadmina cepure, lai to visu uzrakstītu vienā komandā :D kuru pēctam neviens nesaprot un fig kautko izmainīsi vai pieliksi.

Tad palieku pie sava primā sprieduma, labāk uzrakstītu pāris rindas Pitonā un miers

Share this post


Link to post
Share on other sites
Tic-Tac
pirms 13 stundām , Anonīms Alkoholiķis teica:

Sapratu problemu ar foruma lasītprasmēm. Viņš taisa bash skriptu, kas uztaisa to izejas failu, bet netiek galā ar izvadi.

 


echo '"SHA-1","MD5","CRC32","FileName","FileSize","ProductCode","OpSystemCode","SpecialCode"'
find -type f -name "*" -exec bash -c '_m=`(/usr/bin/md5sum "{}"|cut -d " " -f 1)`\\; echo "\"$_m\",\"{}\""' \;

 


"5ea2ec7740ac5f2612b6e6c4d12bbadc\","./.bashrc"
"22bfb8c1dd94b5f3813a2b25da67463f\","./.bash_logout"
"3ae54e3f9fa96bc3034b98b2fd30e7a3\","./.bash_history"
"f9baa9c2060c4d19b49169e9e475d133\","./README-cloudshell.txt"
"447ecfc839910103f121085490ad01fc\","./.docker/config.json"
"ecb6d3479ac3823f1da7f314d871989b\","./.profile"
"a7c1f78d096e37034280568ff4abcb89\","./.theia/settings.json"

Reku viens virziens, kā to var risināt. Kaut kur drusu pārrakstījos un ir viena ekstra šķērssvītra. To nāksies pašam novākt. 

 

Wow! Liels paldies par ideju! Izskatās, ka šis risinājums man varētu palīdzēt iztikt bez awk, ar sed veiksmīgi tiku vaļā no backslashiem un punktiem. Tagad jāprovē iekļaut outputā pārējās komandas.

 

find -type f -exec bash -c 'm=`(/usr/bin/md5sum "{}"|cut -d " " -f 1)`\\; echo "\"$m\",\"{}\""' \; | sed -e 's/[./]//g' -e 's/[\]//g'


"78b0702a5dfd2b1ea1e9cfe0ba237da3","koreainternetandpubopformpdf"
"b7ec4abc79542a9a2e7df6aa8b455d51","PolandandbalticspuboponUkrainepdf"
"31eeccf3693bd01e40d47d194d0be8b0","Measuring labour market discriminationpdf"
"3a8ff4658d92e07220e7b54b0f0147dd","howamericanpubopshapespolicypdf"
"c1d7d49bcd97d3b39c515bab134ab292","Perception Managementpolandmarketingdeceptiontechniquespdf"
"d9ca9e68954b26fa9b433777e2abe4b3","Perception ManagementClassicaldeceptiontechniquesandinfowarbyKopppdf"
"4600e86fec4de9c9bd1680c64e99cad1","Perception ManagementInformationOperationsMattersbyLeighArmisteadbookreviewpdf"
"d58bf40342594245a9937a5438685a53","Perception ManagementInformationOperationstextbookpdf"
"970099372f530e183283cab3a72135f1","Perception ManagementRussia'sreflexivecontroltheorypdf"

 

Ja izmantojot tavu risinājumu izdarīšu to, ko man vajag, tad tev, Anonīmais, aliņš no manis!

 

Share this post


Link to post
Share on other sites
Tic-Tac

Liels paldies Anonīmajam Alkoholiķim par cita virziena ieteikšanu, dabūju ko gribēju. Nav eleganti, nav multithreadinga ātrums, bet kā pagaidu risinājums derēs.  Ja nu kādam interesē:

 

echo "\"SHA-1"\","\"MD5"\","\"CRC32"\","\"FileInode"\","\"FileSize"\","\"ProductCode"\","\"OpSystemCode"\","\"SpecialCode"\" && find -type f -exec bash -c 'a=`(sha1sum "{}"|cut -d " " -f 1)` b=`(md5sum "{}"|cut -d " " -f 1)` c=`(crc32 "{}")` d=`(stat -c %i "{}")` e=`(stat -c %s "{}") `\\; echo "\"$a\",\"$b\",\"$c\",\"$d\",$e,200828,\"365\",\"\""' \; | sed -e 's/[./]//g' -e 's/[\]//g'

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
Sign in to follow this  

×
×
  • Create New...