Καλημερα. Σε ενα αρχειο με πχ 30 γραμμες θελω να κρατησω την 1η και απο την 10 μεχρι την 20. Για το δευτερο κομματι, δηλαδη απο την 21 ως το τελος, καβω με το sed ετσι και δουλευει.
Για να κοψω το πρωτο κομματι, αυτο εδω ειναι σωστο?Κώδικας:sed -i '21,$d' arxeio
Θελω επισης και να διωξω ενα συγκεκριμενο κομματι κειμενου απο καθε γραμμη που το περιεχει, πχ να φυγει τοΚώδικας:sed -i '2,9' arxeio
"mitsos=blablabla" (με τα αυτακια).
Εμφάνιση 1.861-1.875 από 1922
Θέμα: Ερώτηση για bash
-
13-01-23, 08:25 Απάντηση: Ερώτηση για bash #1861
Τελευταία επεξεργασία από το μέλος jim_p : 13-01-23 στις 08:34.
ديميتريس
-
13-01-23, 10:00 Απάντηση: Ερώτηση για bash #1862
Σου δίνω μια λύση σε perl one-liner:
Κώδικας:perl -e 'while(($_ = <>) && ($i < 20)) { $i++; if ($i == 1 || $i >= 10) { s/"mitsos=blablabla"//g; print; } }' < in.txt > out.txt
Κώδικας:1-keep 2 3 4 5 6 7 8 9 10 11"mitsos=blablabla"afterbla 12 13 14"mitsos=blablabla""mitsos=blablabla"afterdoublebla 15 16 17 18 19 20 21-ignore
Κώδικας:1-keep 10 11afterbla 12 13 14afterdoublebla 15 16 17 18 19 20
NetBSD Rocks!
http://www.netbsd.org
-
13-01-23, 12:41 Απάντηση: Ερώτηση για bash #1863
Ωραια ιδεα, απλα το le δεν εχει καθολου perl και χαρηκα τζαμπα! Το αλλο το εκανα ετσι
Κώδικας:sed -i '21,$d' arxeio sed -i '2,9' arxeio
Αυτο με την διαγραφη του mitsos=blablabla μπαινει σε δευτερη μοιρα τωρα.Τελευταία επεξεργασία από το μέλος jim_p : 13-01-23 στις 12:51.
ديميتريس
-
13-01-23, 13:16 Απάντηση: Ερώτηση για bash #1864
Τι είναι το le;
Γενικά μπορείς να συναρμολογήσεις τα κομμάτια (1η γραμμή και 10η έως 20η), με συνδυασμό head και tail και στο τέλος, να βάλεις μια sed για να πετάξεις έξω το "mitsos=blablabla", απλά μου φάνηκε περισσότερος μπελάς (και πιο άσχημο :P):
Κώδικας:a=`head -n 1 < in.txt`; b=`head -n 20 < in.txt | tail -n 11`; echo -e "$a\n$b" | sed 's/"mitsos=blablabla"//g' > out.txt
NetBSD Rocks!
http://www.netbsd.org
-
13-01-23, 13:20 Απάντηση: Ερώτηση για bash #1865
Το libreelec, που εινια διανομη που εχει τα απολυτως απαραιτητα για να τρεξει ενα kodi και τερμα.
Θα το δω μετα αυτο γιατι τωρα κοιταω ενα pc με windows.ديميتريس
-
13-01-23, 22:38 Απάντηση: Ερώτηση για bash #1866
Αφού οι διάφορες εκτελέσεις του sed ξεχωριστά τρέχουν σωστά, γιατί δεν τις βάζετε μαζί αντί για την χρήση του head; Όχι ότι έτσι δεν παίζει φυσικά απλά είναι πιο άσχημο με το head.
Κώδικας:% cat /tmp/in 1-keep 2 3 4 5 6 7 8 9 10 11"mitsos=blablabla"afterbla 12 13 14"mitsos=blablabla""mitsos=blablabla"afterdoublebla 15 16 17 18 19 20 21-ignore % sed -i -e '21,$d' -e '2,9d' -e 's/"mitsos=blablabla"//g' /tmp/in % cat /tmp/in 1-keep 10 11afterbla 12 13 14afterdoublebla 15 16 17 18 19 20
Κώδικας:% cat /tmp/script 21,$d 2,9d s/"mitsos=blablabla"//g % sed -f /tmp/script /tmp/in 1-keep 10 11afterbla 12 13 14afterdoublebla 15 16 17 18 19 20
"I like offending people, because I think people who get offended should be offended" - Linus Torvalds
"Παλιά είχαμε φτωχούς οι οποίοι ζούσανε σε φτωχογειτονιές. Τώρα, η οικονομικά δυσπραγούσα τάξη
κατέχει στέγες υποδεέστερης ποιότητας σε υποβαθμισμένα αστικά κέντρα" - George Carlin
Γα.... την πολιτική ορθότητα.
-
13-01-23, 22:55 Απάντηση: Ερώτηση για bash #1867
Να σου πω την αμαρτία μου, εγώ έτσι κι αλλιώς δεν το πολυδουλεύω το sed (καθώς παίζω συνήθως με perl one-liners), αλλά καλό είναι που δόθηκε μια πιο καθαρή και κομψή λύση.
Bravo!NetBSD Rocks!
http://www.netbsd.org
-
15-01-23, 14:48 Απάντηση: Ερώτηση για bash #1868
Ωραιο το one liner sed που τα κανει μαζεμενα! Θα το δοκιμασω οταν το ξαναχρειαστω. Παραπανω, δεν εκοβε τις γραμμες που ηθελα επειδη το αρχειο μεγαλωσε κατα 500+ γραμμες και επρεπε να αλλαζω τις τιμες του sed. Για αυτο που θελω να φυγει, ο τυπος εκανε ενα καλο και το εγραψε καλυτερα, οποτε για την ωρα θα το κρατησω οπως το εχει.
ديميتريس
-
30-01-23, 13:36 Απάντηση: Ερώτηση για bash #1869
Χαζες ιδεες που εχω...
Θελω απο ενα git repo να δω ολα τα commits σε ενα συγκεκριμενο αρχειο. Ολα ομως, απο τη μερα που φτιαχτηκε. Βρηκα λοιπον ενα σκριπτακι, αυτο εδω*, που για καθε commit κανει και ενα φακελο με τα αρχεια του repo οπως ηταν σε αυτο το commit. Το σκεπτικο μετα ηταν να βρω το commit στο αρχειο που θελω ή, στη χειροτερη, το ιδιο το αρχειο πριν/μετα το commit.
Ειπα οτι θα εχει 10, αντε 20 το πολυ commits. Τελικα εχει 247, οποτε τωρα εχω ενα φακελο με 247 υποφακελους που καθενας ειναι ενα "σημειο" στο ιστορικο του συγκεκριμενου repo. Το νεο σκεπτικο λοιπον ειναι να κανω grep... κατι σε καθε εναν μεχρι να βρω το παλιοτερο αρχειο το οποιο περιεχει αυτο που θελω, πχ να δω ποτε προστεθηκε η λεξη mitsos σε ενα αρχειο κειμενου για πρωτη φορα. Πως μπορω να κανω κατι τετοιο?
* https://gist.github.com/magnetikonli...cd2aa38bd70432ديميتريس
-
30-01-23, 15:54 Απάντηση: Ερώτηση για bash #1870
git blame πρέπει να χρησιμοποιήσεις και όχι αυτό που έκανες. Θα κοιτάξω αργότερα την ακριβή σύνταξη, δεν μπορώ τώρα, αλλά αν θες να συνεχίσεις τη μέθοδό σου κάνε grep -r mitsos και θα γίνει περίπου αυτό που θες.
-
31-01-23, 16:55 Απάντηση: Ερώτηση για bash #1871
Θα μου πεις για το git blame ή να μην περιμενω? :P
Το grep δεν βοηθησε ιδιαιτερα. Παρολο που βγαζει το φακελο, αρα μπορω να δω πως ηταν το repo στο αντιστοιχο commit, δεν τα βγαζει χρονολογικα αλλα αλφαβητικα. Το ιδανικο θα ηταν να ξερω πχ οτι το mitsos μπηκε σε αυτο το commit, βγηκε σε αυτο, ξαναμπηκε σε αυτο κλπ, μιας και μιλαμε για ενα αρχειο που θα το περιεχει παντα.ديميتريس
-
01-02-23, 12:47 Απάντηση: Ερώτηση για bash #1872
-
01-02-23, 13:13 Απάντηση: Ερώτηση για bash #1873
No worries, μπορω να περιμενω.
ديميتريس
-
02-02-23, 21:13 Απάντηση: Ερώτηση για bash #1874
Δοκίμασε αυτό:
Κώδικας:git log -G STRING --all FILENAME
-
02-02-23, 21:20 Απάντηση: Ερώτηση για bash #1875
Σε ενα arm64 συστημα (coreelec σε s905 tvbox) θελω να τρεξω ενα binary... aarch64, αλλα δεν τρεχει. Αντιθετα, τρεχει η εκδοση του binary που ειναι για arm σκετο. Και το περιεργο ειναι πως στο rpι, που ειναι επισης arm64 debian stable, τρεχει το aarch64 binary και δεν τρεχει το arm!
Πως γινεται αυτο?
Κώδικας:jim@rpi3b:~/bin/dra-0.4.3-arm-unknown-linux-gnueabihf$ ./dra -bash: ./dra: No such file or directory jim@rpi3b:~/bin/dra-0.4.3-arm-unknown-linux-gnueabihf$ file dra dra: ELF 32-bit LSB pie executable, ARM, EABI5 version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-armhf.so.3, for GNU/Linux 4.19.21, stripped ---------- jim@rpi3b:~/bin/dra-0.4.3-aarch64-unknown-linux-gnu$ ./dra A command line tool to download release assets from GitHub Usage: dra <COMMAND> Commands: download Select and download an asset untag Select an asset and generate an untagged version of it completion Generate shell completion help Print this message or the help of the given subcommand(s) Options: -h, --help Print help (see more with '--help') -V, --version Print version jim@rpi3b:~/bin/dra-0.4.3-aarch64-unknown-linux-gnu$ file dra dra: ELF 64-bit LSB pie executable, ARM aarch64, version 1 (SYSV), dynamically linked, interpreter /lib/ld-linux-aarch64.so.1, for GNU/Linux 3.7.0, BuildID[sha1]=664e33f6443c57d7e9bb1cf9b9d9015597c748ae, stripped ---------- $ uname -a Linux rpi3b 5.10.0-21-arm64 #1 SMP Debian 5.10.162-1 (2023-01-21) aarch64 GNU/Linux
ديميتريس
Παρόμοια Θέματα
-
Βοήθεια για ένα απλό bash script
Από AddictedToChaos στο φόρουμ Unix - LinuxΜηνύματα: 34Τελευταίο Μήνυμα: 22-07-11, 01:57 -
bash - matlab
Από simeon.mattes στο φόρουμ Unix - LinuxΜηνύματα: 25Τελευταίο Μήνυμα: 25-06-08, 23:00 -
Bash Script help (Αρχάριος)
Από weakwire στο φόρουμ Unix - LinuxΜηνύματα: 12Τελευταίο Μήνυμα: 08-05-07, 00:41 -
bash rename (mv)
Από hayzel στο φόρουμ Unix - LinuxΜηνύματα: 6Τελευταίο Μήνυμα: 07-01-07, 16:33
Bookmarks