Hirdetés

2024. április 26., péntek

Gyorskeresés

Hozzászólások

(#2101) Jester01 válasza brickm (#2099) üzenetére


Jester01
veterán

Erre tessék: batch programozás

Jester

(#2102) olivera88


olivera88
veterán

Na most melyik ami a legjobb? :DDD Jester első megoldása végül is? Most valamiért nem lett jó, nem írta felül a régi grib fájlt, és megcsinálta tegnapiból. A letöltésbe még nem tettem bele az ellenőrzést.

[ Szerkesztve ]

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2103) olivera88 válasza olivera88 (#2102) üzenetére


olivera88
veterán

Ja persze hogy nem lett jó , a systemd ütemezés bukott el. Le se töltötte a gribet.. :W

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2104) olivera88


olivera88
veterán

Jester01 írta nekem pár napja ezt a fájl ellenőrzést scriptet.

while true
do
size=$(stat -c39845888 \%s ARPEGE_SP1_72H.grib2)
if [ $size -lt -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fi
#csinald meg amit kell
...
# kész nem kell újra
exit 0
done

Na és az lenne a kérdésem hogy a méret ellenőrzésnél meglehetne e adni több fájl nevet, és ha igen hogyan? Mert többet szeretnék letölteni és több fájlt kellene ellenőrizni.

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2105) olivera88 válasza olivera88 (#2104) üzenetére


olivera88
veterán

Ez megoldva.
Egymás után beraktam ugyanezt többi fájlok nevével. És jó.
De lenne egy másik dolog.

Ezt hogy kellene kijavítani h működjön?

#!/bin/sh

while true
do

size=$(stat -c \%s ARPEGE_SP1_12H.grib2)
size=$(stat -c \%s ARPEGE_SP1_24H.grib2)
if [ $size -lt 38797312 -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fi
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_00_12.py
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_13_24.py

SZERVER='x'
FELHASZNALO='x'
JELSZO='x'

ftp -n -v $SZERVER << EOF
ascii
user $FELHASZNALO $JELSZO
prompt
cd ARPEGE
bin
send ARPEGEPCP06.png
send ARPEGEPCP12.png
send ARPEGEPCP18.png
send ARPEGEPCP24.png

EOF

while true
do

size=$(stat -c \%s ARPEGE_SP1_36H.grib2)
size=$(stat -c \%s ARPEGE_SP1_48H.grib2)
if [ $size -lt 38797312 -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fi

python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_25_36.py
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_37_48.py

SZERVER='x'
FELHASZNALO='x'
JELSZO='x'

ftp -n -v $SZERVER << EOF
ascii
user $FELHASZNALO $JELSZO
prompt
cd ARPEGE
bin
send ARPEGEPCP30.png
send ARPEGEPCP36.png
send ARPEGEPCP42.png
send ARPEGEPCP48.png

EOF

while true
do

size=$(stat -c \%s ARPEGE_SP1_60H.grib2)
size=$(stat -c \%s ARPEGE_SP1_72H.grib2)
if [ $size -lt 38797312 -o $size -gt 45088768 ]
then
# hiba, varj 5 percet
sleep 5m
# probald ujra
continue
fi

python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_49_60.py
python /home/oliver/Magics_PCP_T_script/arpegepcpmslvhu_61_72.py

SZERVER='x'
FELHASZNALO='x'
JELSZO='x'

ftp -n -v $SZERVER << EOF
ascii
user $FELHASZNALO $JELSZO
prompt
cd ARPEGE
bin
send ARPEGEPCP54.png
send ARPEGEPCP60.png
send ARPEGEPCP66.png
send ARPEGEPCP72.png
exit

EOF

Ezt a hibaüzenetet kapom így.
/Run_model3.sh: 120: ./Run_model3.sh: Syntax error: end of file unexpected (expecting "done")

Ha kiszedem az EOF okat a feltöltés végéről akkor lefut a script de nem jó, mert invalid commandokat ir a többi python script futtatására.

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2106) dabadab válasza olivera88 (#2105) üzenetére


dabadab
titán

A while-ok végén kimaradtak a done-ok, azt reklamálja.

A formázási lehetőség között van olyan, hogy "Programkód", kód beírásakor használd azt, mert az megőrzi a formázást meg a speciális karaktereket (szögletes zárójelek, meg zárójel elé tett kettőspontból sem lesz smiley).

[ Szerkesztve ]

DRM is theft

(#2107) olivera88 válasza dabadab (#2106) üzenetére


olivera88
veterán

Közben megoldódott done , + exit helyett break. Done + exittel mintha nem működött volna úgy emlékszem.
De a több fájlos ellenőrzés még se működik.
Jók a méretek, és mégis újra kezdi a letöltést. :F
Ez lenne az.

#!/bin/sh

wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=00H12H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_12H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=13H24H&referencetime=$(date +"%Y-%m-%d")T06:00:00Z" -O ARPEGE_SP1_24H.grib2

# új letöltés
sleep 6m
continue

wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=25H36H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_36H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=37H48H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_48H.grib2

# új letöltés
sleep 5m
continue
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=49H60H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_60H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=61H72H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_72H.grib2

while true
do
size=$(stat -c \%s ARPEGE_SP1_12H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_24H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_36H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_48H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_60H.grib2 )
size=$(stat -c \%s ARPEGE_SP1_72H.grib2 )
if [ $size -lt 38797312-o $size -gt 45088768 ]
then
# hiba, varj 10 percet
sleep 5m
# probald ujra
continue
fi
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=00H12H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_12H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=13H24H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_24H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=25H36H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_36H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=37H48H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_48H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=49H60H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_60H.grib2
wget "http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=__xxx__&model=ARPEGE&grid=0.1&package=SP1&time=61H72H&referencetime=$(date +"%Y-%m-%d")T12:00:00Z" -O ARPEGE_SP1_72H.grib2
exit 0
done

[ Módosította: dabadab ]

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2108) dabadab válasza olivera88 (#2107) üzenetére


dabadab
titán

Aha, ez így nagyon nem jó :) Az alapvető hiba az, hogy a size változó függvényét simán felülírod anélkül, hogy az előző értékét vizsgálnád, aztán ha jó, akkor újra azonnal letöltöd, ha meg nem, akkor vársz és újra megnézed (az azóta nyilván változatlan file méretet :) )

Megcsináltam belőle egy normális változatot (a tokent írd bele vissza, azt töröltem az eddigi hozzászólásaidból is, mert az szerintem nem publikus információ):

szerk: észrevettem benne egy kis hibát, javítottam

#!/bin/bash

# access token
TOKEN="__5yLVTdr-sGeHoPitnFc7TZ6MhBcJxuSsoZp6y0leVHU__"

# file size min and max values - if the file's size falls outside of this range it is considered faulty
MIN_SIZE="38797312"
MAX_SIZE="45088768"

# time range - how many hour's data a single file contains
RANGE=12


function download_file()
{
# end time
TO="$1"

# start time - it is calculated a little oddly
FROM=$((${TO}-${RANGE}))
if [ $FROM -gt 0 ] ; then
FROM=$(($FROM+1))
fi

# add leading zeroes if needed
FROM="$(printf "%02d" "${FROM}")"
RANGE="$(printf "%02d" "${RANGE}")"

# url of the data
URL="http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=${TOKEN}&model=ARPEGE&grid=0.1&package=SP1&time=${FROM}H${TO}H&referencetime=$(date +'%Y-%m-%d')T${RANGE}:00:00Z"

# output file name
OUT_FILE="ARPEGE_SP1_${TO}H.grib2"

while true ; do
# get the file
wget "${URL}" -O "${OUT_FILE}"

# check the filesize
size=$(stat -c \%s "${OUT_FILE}" )
if [ $size -ge "${MIN_SIZE}" -a $size -le "${MAX_SIZE}" ] ; then
# size is OK, leave loop
break
else
# something went wrong, wait a little and retry
sleep 5m
fi
done

}

for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
done

[ Szerkesztve ]

DRM is theft

(#2109) olivera88 válasza dabadab (#2108) üzenetére


olivera88
veterán

Nincs semmi gond a tokennel, mert publikus mindenki számára a letöltés. Úgyhogy az első sor törölhető akkor ugye? Meg amúgy se tudnának semmit se kezdeni a grib2 fájlokkal.
Ezt hogy érted hogy size változó értékét felül írom? Mivel? Amúgy nem így akartam megoldani, hanem úgy hogy szétbontom az összes fájl ellenőrzést, és berakom a letöltések után, nem mint most hogy a végén ellenőrzi az egészet csak.
Nem működik a letöltés. Csak egy HTML fájl töltődik le a gribek helyett. Meg ez hogy van beállítva? Hogy egyszerre töltse le az összes fájlt? Mert úgy nem lehet, vagyis lehet, de én fokozatosan akarom, mivel nem egyszerre frissülnek a szerveren a fájlok, hanem fokozatosan.

[ Szerkesztve ]

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2110) dabadab válasza olivera88 (#2109) üzenetére


dabadab
titán

"Úgyhogy az első sor törölhető akkor ugye?"

Nem, ott meg kell adni a tokent, mert anélkül a jelek szerint nem megy, azért kapsz html file-t. Akkor azt visszarakom.

"Ezt hogy érted hogy size változó értékét felül írom? Mivel?"

A következő file méretével, amikor ott van egymás után sokszor a "size=" kezdetű sor, akkor minden sorban új értéket adsz a size-nak és csak a legutolsód ellenőrzöd.

"Amúgy nem így akartam megoldani, hanem úgy hogy szétbontom az összes fájl ellenőrzést, és berakom a letöltések után, nem mint most hogy a végén ellenőrzi az egészet csak."

Ami scriptet írtam, az így van, minden egyes file-t a letöltése után vizsgál meg, nem pedig egyben a végén.

"Meg ez hogy van beállítva? Hogy egyszerre töltse le az összes fájlt? Mert úgy nem lehet, vagyis lehet, de én fokozatosan akarom, mivel nem egyszerre frissülnek a szerveren a fájlok, hanem fokozatosan."

Vagyis várni akarsz az egyes file-ok letöltése után? Ha erről van szó, akkor azt a külső ciklusban gond nélkül megteheted:

for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
done

helyett az kell, hogy (ha pl. 10 percet akarsz várni):

for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
sleep 10m
done

[ Szerkesztve ]

DRM is theft

(#2111) olivera88 válasza dabadab (#2110) üzenetére


olivera88
veterán

Értem. Köszi. De a letöltés most se akar jó lenni valamiért. :( Most is HTML fájl töltődik.

#!/bin/bash

# access token
TOKEN="__5yLVTdr-sGeHoPitnFc7TZ6MhBcJxuSsoZp6y0leVHU__"

# file size min and max values - if the file's size falls outside of this range it is considered faulty
MIN_SIZE="38797312"
MAX_SIZE="45088768"

# time range - how many hour's data a single file contains
RANGE=12


function download_file()
{
# end time
TO="$1"

# start time - it is calculated a little oddly
FROM=$((${TO}-${RANGE}))
if [ $FROM -gt 0 ] ; then
FROM=$(($FROM+1))
fi

# add leading zeroes if needed
FROM="$(printf "%02d" "${FROM}")"
RANGE="$(printf "%02d" "${RANGE}")"

# url of the data
URL="http://dcpc-nwp.meteo.fr/services/PS_GetCache_DCPCPreviNum?token=${__5yLVTdr-sGeHoPitnFc7TZ6MhBcJxuSsoZp6y0leVHU__}&model=ARPEGE&grid=0.1&package=SP1&time=${FROM}H${TO}H&referencetime=$(date +'%Y-%m-%d')T${RANGE}:00:00Z"

# output file name
OUT_FILE="ARPEGE_SP1_${TO}H.grib2"

while true ; do
# get the file
wget "${URL}" -O "${OUT_FILE}"

# check the filesize
size=$(stat -c \%s "${OUT_FILE}" )
if [ $size -ge "${MIN_SIZE}" -a $size -le "${MAX_SIZE}" ] ; then
# size is OK, leave loop
break
else
# something went wrong, wait a little and retry
sleep 5m
fi
done

}
for TO in 12 24 36 48 60 72 ; do
download_file "${TO}"
sleep 5m
done

[ Szerkesztve ]

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2112) olivera88 válasza olivera88 (#2111) üzenetére


olivera88
veterán

Ja megvan működik, az én hibám volt, a linkben is beírtam a tokent, közben meg nem kellett volna. Köszi szépen. :R

[ Szerkesztve ]

LG Velvet 5G Android 11 - Windows 10 Pro x64 & Debian 11 Bullseye - WoWS unsinkable_sam_

(#2113) DrojDtroll


DrojDtroll
addikt

Google keresési javaslatokhoz hasonlót meg lehetne valósítani?

Mondjuk egy fájl soraiban akarunk keresni, vagy egy mappa fájljaiban.

(#2114) spammer válasza DrojDtroll (#2113) üzenetére


spammer
veterán

awk, grep, ilyesmikkel megoldható.

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2115) DrojDtroll válasza spammer (#2114) üzenetére


DrojDtroll
addikt

nagyszerű :)

(#2116) spammer válasza DrojDtroll (#2115) üzenetére


spammer
veterán

Izé, lehet, hogy félreértettem. Keresési találatokra gondoltam, hogy a talált kulcsszavak esetén a kulcsszó környezetében írjon még ki mondjuk 1-2 sort.

Ha arra gondolsz, hogy elkezdesz gépelni valamit és közben dob fel találatokat és minden billentyű leütésnél frissül, azt passzolom.

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2117) DrojDtroll válasza spammer (#2116) üzenetére


DrojDtroll
addikt

igen az utóbbira gondoltam

(#2118) Jester01 válasza DrojDtroll (#2117) üzenetére


Jester01
veterán

Nyilván lehet, de azért ez eléggé pontatlan specifikáció.

Jester

(#2119) DrojDtroll válasza Jester01 (#2118) üzenetére


DrojDtroll
addikt

Akkor javítok rajta.

Van kb 600 kisebb program. Amelyekből el kell indítanom az egyiket.

Az elképzelés az lenne hogy ha leütök egy betűt akkor az olyan betűvel kezdődő fájlok kerüljenek kilistázásra. Max 10 darab. Ha még egy betűt betűt leütök akkor az előző két betűvel kezdődő fájlok kerüljenek kilistázásra ugyan azon a helyen ahol az előző találatok. És így tovább.

Ha fájlok helyett egy fájl soraival is működik a dolog az még jobb.

[ Szerkesztve ]

(#2120) spammer válasza DrojDtroll (#2119) üzenetére


spammer
veterán

bash+python kombóval van ilyesmi: pmenu

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2121) DrojDtroll válasza spammer (#2120) üzenetére


DrojDtroll
addikt

köszönöm szerintem tökéletes lesz

(#2122) Jim-Y


Jim-Y
veterán

Sziasztok, egy unix shell reguláris kifejezésre lenne szükségem, de nem tudom összehozni :/
Egy csomó mindent próbáltam amiket nem fogok belinkelni, de ezt szeretném:

^(backend)*(.js)$

Tehát "backend" -el kezdődjön és ".js"-re végződjön. Nem sikerül összehozni :/

Edit: na mire leírtam úgy tűnik, hogy ez működik: '^(backend).*(.js)$

Üdv

[ Szerkesztve ]

(#2123) Jim-Y válasza Jim-Y (#2122) üzenetére


Jim-Y
veterán

Akkor egy kicsit más fajta kérdés:

Ez a két sor mit csinál

OUTPUT=$(git diff --name-only HEAD | grep -E '^(backend).*(.js)$')
a=("${(f)OUTPUT}")

Az első sor az tiszta, de a második sor mit csinál az OUTPUT-al?

(#2124) bambano válasza Jim-Y (#2122) üzenetére


bambano
titán
LOGOUT blog

backend*.js
vagy
^backend*.js$

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2125) doc válasza bambano (#2124) üzenetére


doc
nagyúr

ez nem jo, csak a backend.js es backen.js-re illeszkedik (pontosabba meg sokmindenre, pl. backenxjs)

a *ele kell a pont:

^backend.*\.js$

(#2126) bambano válasza doc (#2125) üzenetére


bambano
titán
LOGOUT blog

unix shell reguláris kifejezést keresett, nem szabvány regexpet.
tehát jó.
bambano@bruti:/tmp/3$ touch back.js
bambano@bruti:/tmp/3$ touch backe.js
bambano@bruti:/tmp/3$ touch backen.js
bambano@bruti:/tmp/3$ touch backend.js
bambano@bruti:/tmp/3$ touch backend-.js
bambano@bruti:/tmp/3$ touch backend-3.js
bambano@bruti:/tmp/3$ touch backend-3.js
bambano@bruti:/tmp/3$ touch backend-34.js
bambano@bruti:/tmp/3$ touch backend34.js
bambano@bruti:/tmp/3$ touch backend345.js
bambano@bruti:/tmp/3$ ls -l backend*.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend345.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-34.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend34.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-3.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend-.js
-rw-r--r-- 1 bambano bambano 0 ápr 13 13:41 backend.js

a második kérdésében a grep -E-t kérdezte, az nem unix shell regexp, hanem extended szabvány regexp.
tehát az első kérdésére az én válaszom helyes. hogy a második kérdéséből az derült ki, hogy nem is ezt akarta kérdezni, az mvp :P

Egy átlagos héten négy hétfő és egy péntek van (C) Diabolis

(#2127) doc válasza bambano (#2126) üzenetére


doc
nagyúr

nincs olyan hogy 'unix shell regexp', amire te annak hivsz az sima glob expression

egyebkent az altala adott peldabol is egyertelmu volt hogy regexpet keres nem pedig shell filemaskot

MOD: amennyiben utobbi csak utolag kerult bele a valaszom utan, akkor a fenti termeszetesen targytalan :)

[ Szerkesztve ]

(#2128) beloadjoker


beloadjoker
őstag

Hali srácok egy paranccsal lenne problémám vagyis egy feladattal tudnátok segíteni?

Adott a nevek.txt állomány. Mely paranccsal tudná a fájlban található magyarosan írt neveket /nagybetűvel kezdődő utána kisbetű majd ismét/ angolosan megjeleníteni /felcserélni az első és a második nevet/?

Próbálkoztam de enm jön össze idáig jutottam:

cat nevek.txt | egrep '[A-Z][a-z]+' | awk '{print $2 $1}'

:R

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2129) spammer válasza beloadjoker (#2128) üzenetére


spammer
veterán

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

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2130) beloadjoker válasza spammer (#2129) üzenetére


beloadjoker
őstag

Köszönöm, esetleg kis magyarázatot adnál? :B
Főleg ez a része nem tiszta:
/[a-zA-Z]+/
de az sem hogy $2 után $1 elé miért kell "-jel

+Ha már így benne vagyunk lenne még egy feladat:

Hogyan tudná a valami.txt fájl tartalmát megjeleníteni awk segítségével úgy hogy minden sor elejére írja ki a
sorok és az aktuális sorban szereplő szavak számát is?

:R

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2131) spammer válasza beloadjoker (#2130) üzenetére


spammer
veterán

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ács

A " " az egy szóköz, különben ez lesz:

awk '{print $2 $1}' nevek.txt
BélaKiss
JózsiNagy
EndreTakács

szerk: a házi feladat többi rész rád vár. :P 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. :)

[ Szerkesztve ]

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2132) beloadjoker válasza spammer (#2131) üzenetére


beloadjoker
őstag

jaj tényleg a szóköz :W

egyébként rendben de és ha nem csak az van benne?
Pl itt ahogy látom nem is jó: első kettő elmegy "névnek" de harmadik már nem mivel a második szó nem nagybetűvel kezdődik mégis kiírta

j@ubuntu:~/Documents$ cat nevek.txt
Kis András
Asdfs Psdfsd
SDFsdf sdfsdfsdf
j@ubuntu:~/Documents$ awk '/[a-zA-Z]+/{print $2" "$1}' nevek.txt
András Kis
Psdfsd Asdfs
sdfsdfsdf SDFsdf

* :DD Jó pár feladat mögöttem van már de ezek nem mentek azért írtam hátha tudtok segíteni :)

:R

[ Szerkesztve ]

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2133) spammer válasza beloadjoker (#2132) üzenetére


spammer
veterán

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.

[ Szerkesztve ]

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2134) beloadjoker válasza spammer (#2133) üzenetére


beloadjoker
őstag

Sajnos ez sem nyert, de köszönöm próbálkozom még. :)

:R

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2135) Headless válasza beloadjoker (#2134) üzenetére


Headless
őstag

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.

[ Szerkesztve ]

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2136) beloadjoker válasza Headless (#2135) üzenetére


beloadjoker
őstag

:R

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2137) Headless válasza beloadjoker (#2136) üzenetére


Headless
őstag

jah most nézem akkora ellentmondás van a field numberes szűrésemben... :D

nagyobb 2-nél és kisebb 3-nál... :D mindegy a lényeget gondolom értetted.

[ Szerkesztve ]

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2138) beloadjoker válasza Headless (#2137) üzenetére


beloadjoker
őstag

Igen koszonom :-)

:R

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2139) beloadjoker válasza beloadjoker (#2138) üzenetére


beloadjoker
őstag

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 --> 2008

sed '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?

:R

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2140) spammer válasza beloadjoker (#2139) üzenetére


spammer
veterán

$ cat evszamok.txt
1908
1922
1938
1522
2012

$ awk '/^19[0-9]{2}$/{sub("19","20");print}' evszamok.txt
2008
2022
2038

Biztos van egyszerűbb megoldás is, de nekem most még korán van, elsőre ez jött. :DDD

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2141) Headless válasza beloadjoker (#2139) üzenetére


Headless
őstag

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...

[ Szerkesztve ]

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2142) beloadjoker válasza spammer (#2140) üzenetére


beloadjoker
őstag

Köszi bár nem teljesen jó:

j@ubuntu:~$ cat a
19 1923 132323 192323
1982
Barbara Jozsi Bela bela jozsi barbara
1999 AsdfgsdfgZ Asfgsdfgsd1Z
Asd asd bbbb
ccccc
cccccc
j@ubuntu:~$ awk '/^19[0-9]{2}$/{sub("19","20");print}' a
2082

de már sejtem hol a gond

:R

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2143) beloadjoker válasza Headless (#2141) üzenetére


beloadjoker
őstag

Még most sem sikerült, leírnád hogy kellene? :B

Túl nagy évszám nem gond tanár adja a feladatot persze ha kapok ilyet zh-n, nem írta hogy nem lehet nagyobb az évszám valamennyinél :)

:R

*igen csak én csináltam gyors nyilván hogy keressem a megoldásban a hibát :C

[ Szerkesztve ]

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2144) ZCoyote


ZCoyote
őstag

Sziasztok,

Lehet, hogy ez a kérdés nem ide tartozik de hátha...

Hogyan lehet egy parancs lefutásakor kiíratni a dátumot a terminálban?

Előre is köszi!

Romani ite domum.

(#2145) beloadjoker válasza ZCoyote (#2144) üzenetére


beloadjoker
őstag

Hát lehet hogy nem a legjobb megoldás de:

date && és_ide_a_parancs_amit_akarsz

/így az elején lesz persze ha fordítva csinálod akkor a végére írja ki a dátumot/

[ Szerkesztve ]

Oneplus One 64gb S. Black + nokia N900 + Xperia Mini + Lenovo y510p i7 SLI 16Gb 256 ssd 1tb ext. hdd + Lenovo x200 + Nexus 7 grouper 16gb + Nexus 7 flo 32gb

(#2146) Headless válasza beloadjoker (#2143) üzenetére


Headless
őstag

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.

[ Szerkesztve ]

LEDE - R3G/DIR860l -> https://tinyurl.hu/Ntkb/

(#2147) ZCoyote válasza beloadjoker (#2145) üzenetére


ZCoyote
őstag

Köszi!

Romani ite domum.

(#2148) vargalex válasza beloadjoker (#2142) üzenetére


vargalex
félisten

Szia!

Én ezt tenném:

cat a | sed 's/\b19\([0-9]\{2\}\)\b/20\1/g'

Alex

(#2149) spammer válasza vargalex (#2148) üzenetére


spammer
veterán

Felesleges a cat-ból pipe-olni.

„A feketébe öltözött ember a sivatagon át menekült, a harcos pedig követte."

(#2150) vargalex válasza spammer (#2149) üzenetére


vargalex
félisten

Tudom, hogy felesleges, de nem azon van a lényeg és plusz erőforrást sem igényel.

Alex

Copyright © 2000-2024 PROHARDVER Informatikai Kft.