Jump to content

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


Tic-Tac
 Share

Recommended Posts

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 :)

 

 

 

Link to comment
Share on other sites

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

Link to comment
Share on other sites

Anonīms Alkoholiķis

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?

Labots - Anonīms Alkoholiķis
Link to comment
Share on other sites

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. 

Link to comment
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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Labots - AndrisBB
Link to comment
Share on other sites

Anonīms Alkoholiķis

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. 

Labots - Anonīms Alkoholiķis
  • Atbalstu 1
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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!

 

Link to comment
Share on other sites

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'

Link to comment
Share on other sites

Izveido kontu, vai pieraksties esošajā, lai komentētu

Jums ir jābūt šī foruma biedram, lai varētu komentēt tēmas

Izveidot jaunu kontu

Piereģistrējies un izveido jaunu kontu, tas būs viegli!

Reģistrēt jaunu kontu

Pierakstīties

Jums jau ir konts? Pierakstieties tajā šeit!

Pierakstīties tagad!
 Share

×
×
  • Izveidot jaunu...