Sziasztok,
Az "unzip -l allomany.zip" eredményét szeretném feldolgozni sed-el. Eredményként a második szintű utat kapjam vissza. Pld.:
Archive: src.zip
Length Date Time Name
-------- ---- ---- ----
0 01-23-14 17:33 store/
0 01-23-14 17:33 store/app/
0 01-23-14 17:33 store/app/code/
0 01-23-14 17:33 store/app/code/core/
0 01-23-14 17:33 store/app/code/core/Mage/
0 01-23-14 17:33 store/app/code/core/Mage/Cms/
0 01-23-14 17:33 store/skin/
0 01-23-14 17:33 store/skin/design/
0 01-23-14 17:33 store/skin/design/frontend/
0 01-23-14 17:33 store/skin/design/frontend/default/
Az eredmény legyen a következő:
store/app/
store/skin/
Tud valaki segíteni?
Előre is köszönöm.
- 3806 megtekintés
Hozzászólások
Azt hiszem, nagyjából ezt keresed:
... | sed -e 's@^\([^/]\+/[^/]\+/\).*@\1@'
ami tetszés szerint rövidíthető erre:
... | sed -e 's@^\([^/]\+/\{2\}\).*@\1@'
Innen már csak egy sort -u a kívánt kimenet.
- A hozzászóláshoz be kell jelentkezni
Valamiért nem működik a második parancs. Ugyanaz az eredménye mint a "unzip -l"-nek.
- A hozzászóláshoz be kell jelentkezni
Próbáltam a következőt de az kiírja az első szintű könyvtárat is:
unzip -l src.zip | sed -e 's@^\([^/]\+/[^/]\+/\).*@\1@'| awk '/[0-9][0-9]:[0-9][0-9]/{ print $4}' | sort -u
store/
store/app/
store/skin/
- A hozzászóláshoz be kell jelentkezni
Ja, hogy úgy, és awk is lehet...
Esetleg gawk is?
gawk --re-interval '$4 ~ /^([^/]+\/){2,}/ {print gensub(/(^([^/]+\/){2}).*/, "\\1", "", $4) }' | sort -u
- A hozzászóláshoz be kell jelentkezni
csak sed jó?
| cut -f4 -d' ' | grep -o '^[a-z]*\/[a-z]*/' | uniq
===============================================================================
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
Bármi jó ami a második szintű könyvtárakat adja vissza. A fenti példa nem ad vissza eredményt.
unzip -l src.zip | cut -f4 -d' ' | grep -o '^[a-z]*\/[a-z]*/' | uniq
- A hozzászóláshoz be kell jelentkezni
Az altalad adott peldakimenetet hasznaltam , de csak cattel kiirattam egy filebol.
unzip -l test.zip
Archive: test.zip
Length Date Time Name
--------- ---------- ----- ----
0 2014-01-27 16:58 store/
0 2014-01-27 16:58 store/app/
0 2014-01-27 16:58 store/app/code/
0 2014-01-27 16:58 store/app/code/core/
0 2014-01-27 16:58 store/app/code/core/Mage/
0 2014-01-27 16:58 store/app/code/core/Mage/Cms/
0 2014-01-27 16:58 store/skin/
0 2014-01-27 16:58 store/skin/design/
0 2014-01-27 16:58 store/skin/design/frontend/
0 2014-01-27 16:58 store/skin/design/frontend/default/
--------- -------
0 10 files
unzip -l test.zip | grep -o -E '([a-zA-Z]*/)*' | grep -o '^[a-z]*\/[a-z]*/' | uniq
unzip -v
UnZip 6.00 of 20 April 2009, by Info-ZIP. Maintained by C. Spieler. Send
bug reports using http://www.info-zip.org/zip-bug.html; see README for details.
grep --version
grep (GNU grep) 2.16
===============================================================================
// Hocus Pocus, grab the focus
winSetFocus(...)
http://c2.com/cgi/wiki?FunnyThingsSeenInSourceCodeAndDocumentation
- A hozzászóláshoz be kell jelentkezni
... | cut -f4 -d \ | cut -f1-2 -d \/
Mondjuk a trailing /-t megeszi, nem tudom, baj-e.
--
Debian - The "What?!" starts not!
http://nyizsa.blogspot.com
- A hozzászóláshoz be kell jelentkezni
Egy példa awk-val, a sed most kifogott rajtam :-P
awk '$NF~/^[^\/]+\/[^\/]+\/$/ { print $NF}'
- A hozzászóláshoz be kell jelentkezni
unzip -l fajl.zip | tr -s " " "\t" | cut -f 5- | grep -oE "^[^/]+/[^/]+"
- A hozzászóláshoz be kell jelentkezni