- iPhone topik
- Apple Watch Sport - ez is csak egy okosóra
- Apple iPhone 17 Pro Max – fennsík
- Milyen okostelefont vegyek?
- Homokféreggel is pózolhatna a OnePlus 15
- Szerkesztett és makrofotók mobillal
- Yettel topik
- Apple iPhone Air - almacsutka
- One mobilszolgáltatások
- Huawei Watch GT 6 és GT 6 Pro duplateszt
Új hozzászólás Aktív témák
-
vargalex
félisten
válasz
beloadjoker #2142 üzenetére
Szia!
Én ezt tenném:
cat a | sed 's/\b19\([0-9]\{2\}\)\b/20\1/g'
-
ZCoyote
őstag
válasz
beloadjoker #2145 üzenetére
Köszi!
-
Headless
őstag
válasz
beloadjoker #2143 üzenetére
Hát ez egy összetetteb ha így mindenre gondolni kell...
Első körben vegyük azokat amik a sor közepén helyezkednek el, 4 szám egymás után, előtte utána bármi ami nem szám, az már évszám
sed "s/\([^0-9]\)\(19\)\([0-9]\{2\}[^0-9]\)/\120\3/g" /evszam.txt
Előtte nincs semmi (sorkezdés) utána van bármi ami nem szám.
sed "s/^\(19\)\([0-9]\{2\}[^0-9]\)/20\2/" /evszam.txt
Előtte bármi ami nem szám, utána semmi (sorvég).
sed "s/\([^0-9]\)\(19\)\([0-9]\{2\}\)$/\120\3/" /evszam.txt
előtte utána semmi (csak az évszám van).
sed "s/^\(19\)\([0-9]\{2\}\)$/20\2/" /evszam.txt
Persze ezt besűrítheted egy nagy átláthatatlan parancsba.
sed "s/^\(19\)\([0-9]\{2\}\)$/20\2/;s/\([^0-9]\)\(19\)\([0-9]\{2\}\)$/\120\3/;s/^\(19\)\([0-9]\{2\}[^0-9]\)/20\2/;s/\([^0-9]\)\(19\)\([0-9]\{2\}[^0-9]\)/\120\3/g" /evszam.txt
Minden eshetőségre könnyebbet nem találtam. Persze a szövegelválasztókat cserélheted bármi másra. [^0-9] hogy ne ugorjon bármire, ami nem szám. pl nem szám és nem betű. [^0-9a-zA-Z] vagy csak szóköz és vessző [ ,]
Az &&-el óvatosan, ha mindenképp le kell futni, mert ha így adod ki, akkor csak akkor fog lefutni, ha az első parancs lefutott és a return értéke 0.
vagyis ha mondjuk grep nem talál semmit akkor nem fog végrehajtódni a && után jövő parancs. Ha már 1 sorba kell tömöríteni használjuk a ";"-et parancsok elválasztásához.
-
Headless
őstag
válasz
beloadjoker #2139 üzenetére
Ez attól függ mi a környezet, az évszámok utáni részt is rakd be a \2-be. szóköz, end line, field separator, stb az 19 elé meg szintén berakhatod ezeket.
Viszont én a te megoldásodon annyit javítanék, hogy a 19 után nem engedném hogy 0-9 legyen mert akkor az 1993-at is át fogja írni, ami valószínű nem elírás... Ezért én maximum [0-1][0-9]-et engednék meg. Még ígyis 2019-ig fogja változtatni
Szerk: azért elég furcsa egy adatbázis ez... Semmi rendszeresség...
-
spammer
veterán
válasz
beloadjoker #2139 üzenetére
$ cat evszamok.txt
1908
1922
1938
1522
2012
$ awk '/^19[0-9]{2}$/{sub("19","20");print}' evszamok.txt
2008
2022
2038Biztos van egyszerűbb megoldás is, de nekem most még korán van, elsőre ez jött.
-
beloadjoker
őstag
válasz
beloadjoker #2138 üzenetére
Hali srácok ezt szeretném megcsinálni:
Elírás történt egy fájlban. Hogyan cserélné le a 19-cel kezdődő évszámokat 20-val kezdődőre. (évszám 4 karakter!):
pl.:1908 --> 2008sed 's/\(19\)\([0-9][0-9]\)/20\2/g' a
Az a bajom hogy nem csak a 4 számból állókat írja át szóval szerintem be kéne szúrni valahova ezt: {4} de nem sikerül, tudnátok segíteni?
-
Headless
őstag
válasz
beloadjoker #2136 üzenetére
jah most nézem akkora ellentmondás van a field numberes szűrésemben...
nagyobb 2-nél és kisebb 3-nál...
mindegy a lényeget gondolom értetted.
-
Headless
őstag
válasz
beloadjoker #2134 üzenetére
awk '/^[A-Z][a-z]+ [A-Z][a-z]+/{print "Sorszám: "NR" szavak száma: "NF" "$2" "$1}'
Persze az még mindig kérdéses mi van a 3 nevűekkel. ott a 3.-kat elveszted vagy simán kiprinteled, a 3.-kat is.
Idézőjel azért kell, hogy a print tudja hogy nem változót akarsz használni, hanem egyszerű stringet.
ahogy látszik a mintában vannak beépített változók awk-ban, azokat használhatod
googleben hamar megtalálhatod őket.[link]Vagy esetleg még a filed numberre is szűrhetsz
awk 'NF>2&&NF<3&&/^[A-Z]/{print ....}'
mondjuk persze mindig lehet finomítani.
-
spammer
veterán
válasz
beloadjoker #2132 üzenetére
Valami ilyesmi esetleg:
awk '/^[A-Z]+/{print $2" "$1}'
szerk: és a $2 és $1 ugye két mezőt printel, ha valakinek 3 részből áll a neve (pl. Kiss Elemér Géza), akkor az bukta, erre figyelj majd.
-
spammer
veterán
válasz
beloadjoker #2130 üzenetére
Te írtad a regexet, én csak beraktam awk-ba. Ha csak simán nevek vannak a fájlban felsorolva egymás alá, akkor nem is kell. Például:
$ cat nevek.txt
Kiss Béla
Nagy Józsi
Takács Endre
$ awk '{print $2" "$1}' nevek.txt
Béla Kiss
Józsi Nagy
Endre TakácsA " " az egy szóköz, különben ez lesz:
awk '{print $2 $1}' nevek.txt
BélaKiss
JózsiNagy
EndreTakácsszerk: a házi feladat többi rész rád vár.
Sok példa van neten, meg tutorialok is, nulláról nem írja meg helyetted senki, főleg konkrét példa/feladat nélkül.
-
spammer
veterán
válasz
beloadjoker #2128 üzenetére
Felesleges a cat és a grep. awk érti a regexet és tud bementeni fájlt olvasni.
Valami ilyesmi, de a konkrét fájltól is függ.
awk '/[a-zA-Z]+/{print $2" "$1}' nevek.txt
Új hozzászólás Aktív témák
- World of Tanks - MMO
- sziku69: Fűzzük össze a szavakat :)
- Luck Dragon: Asszociációs játék. :)
- Vicces képek
- HÁZIMOZI / HIFI / TV beárazás
- <Lacy85>: Időmilliomosok előnyben - Játékfejlesztés #1
- iPhone topik
- Anime filmek és sorozatok
- Tőzsde és gazdaság
- OFF TOPIC 44 - Te mondd, hogy offtopic, a te hangod mélyebb!
- További aktív témák...
- Bomba ár! Lenovo ThinkPad T470 - i5-G6 I 8GB I 256GB SSD I 14" FHD I HDMI I Cam I W10 I Garancia!
- Nyugdíjazott laptopok :) Ingyen Foxpost!
- Acer TravelMate P214 i3-1115G4 16GB 512GB 14" FHD 1év garancia
- HIBÁTLAN iPhone 15 Pro 256GB Blue Titanium -1 ÉV GARANCIA - Kártyafüggetlen, MS3506, 92% Akkumulátor
- Samsung Galaxy A33 5G 128GB, Kártyafüggetlen, 1 Év Garanciával
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest