Szkriptek: Python, Perl, Bash, ...

dash: fajllistan vegigjaras

Kuzdok, es a netes peldak vhogy nem mukodnek, vagy en vagyok hulye.

Az alap problemam, hogy dash-ben kene fdupes segitsegevel adott eredmenylistan vegigrohanni egyesevel. Ez meg nem is lenne gond, de az fdupes lassan fut le, es az eredmenylistat nem csak egyszer kell hasznalnom.
A gondom akkor kezdodik, amikor az eredmenyemben vannak szokozos fajlnevek, mert nem csak sortoresnel, hanem szokeznel is uj eleme lesz a tombnek.

Ime a kod kivonata:


EREDMENY = "$(fdupes -nrq /konyvtar) | grep -v /nemkellkonyvtar"
for i in $EREDMENY; do
echo "$(stat $i)"
done
echo $EREDMENY

Amit probaltam, de csak kavalkad lett belole (ami ugye koszonheto a tudatlansagomnak is, ezert ilyen javaslatokat is szivesen latok):
* IFS allitasa
* sed segitsegevel a szokozok ele backslash
* ${EREDMENY[@]} a ciklusdefinicios sorba

Minden javaslatot, linket koszonok elore is

Kiemelés a kiegészítésben

Nem tudja valaki miként tudom kiemelni a bash completion által már matchelt részeket a visszaadott fájlnevekből? Pl.:

$ ls -l
log.201101151111
log.201101151218
log.201102151131
log.201102151217
[...]

log.201101151111 log.201101151218
$ less log.201101

Már gugliztam a témára (bash completion highlight matched part), de nem találtam rá semmit.

angol-magyarból magyar-angol generálása

Sziasztok,

most itt vagyok pát hetet Londonban és jól jönne egy 3000 szavas angol-magyar/magyar-angol szótár. Egyelőre nem találtam. Amit találtam az egy 3000 szavas angol szószedet, ha tud valaki angol-magyart, thx, viszont, ha már van egy kb. ilyen terjedelmű angol-magyar, akkor jól jönne egy magyar-angol is és itt kezdtem el gondolkodni azon a számomra érdekesnek tűnő kérdésen, hogy vajon milyen formátumból, milyen szkripttel érdemes generálni egy angol-magyarból egy legalább elfogadható színvonalú magyar-angolt? Nektek is érdekes feladatnak tűnik? Szerintetek?

[megoldva] utoljára módosított fájlra való hivatkozás (bash)

Gyakran adódik olyan helyzet, hogy egy könyvtárban teszek-veszek (parancssorból), és a legutóbb módosított fájl lesz a következő művelet alanya. Ilyenkor (ha elfelejtettem a fájlnevet) kiadok egy ls -ltr parancsot, kimásolom egérrel az utolsó fájlt, majd beragasztom a helyére. Ezt szeretném valahogy megspórolni. Van erre frappáns, rövid megoldás? Tehát pl. hogy az
ezttedd $OVELE
parancsban az $OVELE legyen a könyvtárban utoljára módosított fájl (mondjuk egy gombkombinációra lefutó parancs után)?

Megoldás:
Mivel nálam nincs .bash_profile, betettem a /etc/bash.bashrc-be rootként:
function lf() { ls -1 -t -p | grep -v "/$" | head -n 1; }
function lf2() { ls -1 -t -p | grep -v "/$" | head -n 2 | tail -n 1; }

Így "`lf`" megadja az utolsó fájlt, "`lf2`" pedig az utolsó előttit. Köszönet mindenkinek, aki segített! (Sajnos kell idézőjel is az esetleges szóköz miatt.)

Szerk 2017: még egyszerűbb megoldás a bind használata, pl. Alt+q-hoz kötve és .bashrc-be írva: bind '"\eq"':"\"$(ls -1 -t -p | grep -v "/$" | head -n 1;)\""

kakukktojás

$ if [[ 1.1.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
$ if [[ 1.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
$ if [[ 11.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
$ if [[ 111.1.1 =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
jo
$ if [[ 1.1.1. =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz
$ if [[ 111.1.1. =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then echo jo ; else echo rossz ; fi
rossz

$ bash -version
GNU bash, version 3.2.25(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.

Python 2.x vagy Python 3.x?

Szeretnék Python-t tanulni, mert megtetszett az amazon-ról rendeltem is egy Python 3-as könyvet, aztán felmerült bennem egy kérdés, hogy mennyire elterjedt a Python 3 a hétköznapokban és egy kis keresgélés után rájöttem, hogy még elég sok esetben a 2.x-et használják stb. stb.
A kérdésem az lenne, hogy csak a Python 3-al foglalkozzak vagy először Python 2 és utánna Python 3? (később szeretnék a django-val is megismerkedni)

Előre is köszönöm a válaszokat!

Attila

[Megoldva] Azonos hosszusagu, szamokat tartalmazo filenevek , osszefuzes, bash

Lehet, hogy mar volt, elnezest, nem talalom. Szoval van egy konyvtar, amiben van 50000 file, 00000001-00050000-ig (vagyis ennel joval tobb van...1M-s fileok es cca 80G az image, ami kijonne belole. Egyebkent egy XEN virt. gep).

Szeretnem osszefuzni (cat tunik a legjobbnak). Mukodik a
for i in * ; do cat $i >> img ; done
de nem vagyok biztos benne, hogy rendesen, nev szerint nezi...
Probalkoztam a
for i in {00000001..00050000} kifejezessel is, de ez logikus modon (legalabbis echo eseten...) levagja a kezdo nullakat.
for i in $(seq 00000001 00050000)
ugyanez, vagyis a kezdo nullak eltunnek....
Mit lehetne tenni?

UTF-8 karakterek keresése szövegfájlban

Sziasztok,

legyen egy túlnyomórészt ASCII karaktereket tartalmazó angol nyelvű fájl. Viszont véletlenül belekeveredik egy-két UTF-8-as karakter (pl. sima kötőjel helyett UTF-8-as gondolatjel, vagy sima aposztróf helyett UTF-8-as 9es alakú aposztróf)... a fájlt UTF-8as kódolással mentem el, tehát "cat file.txt" hatására úgy látszik, mintha csak ASCII karakterek lennének benne. A kérdésem az lenne, hogy hogyan lehetne megszűrni ezt a fájlt az UTF-8 karakterektől? Tehát valamilyen program vagy script, amely csak a "nem ASCII" karaktereket printelné ki a fájlból.

kösz.

Python smtplib (utf-8)

Kódrészlet:

import smtplib

email = raw_input ( 'Email: ' )
from_name = raw_input ( 'Name: ' )
subject = raw_input ( 'Subject: ' )

smtpserver = smtplib . SMTP ( smtp_server, smtp_port )
smtpserver . ehlo ()
smtpserver . starttls ()
smtpserver . ehlo
smtpserver . login ( smtp_username, smtp_password )

content = open ( 'message.html' ) . read ()
header = 'To:' + email + '\n' + 'From: ' + from_name + ' <' + from_email + '>\nMIME-Version: 1.0\nContent-type: text/html\n' + 'Subject:' + subject + '\n'
message = header + content

smtpserver . sendmail ( from_email, email, message )

A program nem működik ha a from_name, subject változók vagy a message.html fájl ékezetes karaktereket tartalmaz. A message.html utf-8 karakterkódolású. Még csak most ismerkedem a Python nyelvvel. Segítsetek!