egy kis bash brogizás

Fórumok

egy kis bash brogizás

Hozzászólások

Sziasztok kellene írnom egy scriptet
már a java részét meg is csináltam csak eddig még
szövegkezeléssel nem foglakoztam így nem tom megoldani az
alábbi problémákat:

beszúrás: bekér egy számot és egy szöveget, és a szöveget beszúrja
a fájlba a megadott számú sorba (és az eredetileg ebben a sorban lévő szöveg és az utána következő sorok egy sorral hátrébb kerülnek a
fájlban)

törlés: bekér egy számot, és a fájlból törli a megadott számú sort (és
az utána következő sorok egy sorral előrébb kerülnek a fájlban)

legnagyobb: meghatározza a fájlban található legnagyobb számot
(feltehető, hogy csak pozitív egész számok vannak a fájlban)

Tehát ez a három probláma van amit még nem oldottam meg :(

Aki már csinált ilyesmit segítene?

[quote:485e0466d0="jamal"]
beszúrás: bekér egy számot és egy szöveget, és a szöveget beszúrja
a fájlba a megadott számú sorba (és az eredetileg ebben a sorban lévő szöveg és az utána következő sorok egy sorral hátrébb kerülnek a
fájlban)

törlés: bekér egy számot, és a fájlból törli a megadott számú sort (és
az utána következő sorok egy sorral előrébb kerülnek a fájlban)

legnagyobb: meghatározza a fájlban található legnagyobb számot
(feltehető, hogy csak pozitív egész számok vannak a fájlban)

szerintem a torles: catolod soronkent, mellette porog a szamlalo, es ha a szamlalo=$VALTOZOD akkor nem catolja tovabb. szerintem.soronkent catolni meg vagy lehet rendesen egy paranccsal, vagy wc -l -lel megnezed hany sorbol all, es sed-el kivagod mindig az n-edik sort, es aztan echo $sor >> temp_file. bar ez utobbi nem tul elegans.

beszuras detto, itt is soronkent kell kicatolni, es aztan ha a szam eleri a megadottat, akkor nem catol, hanem a masik forrasbol echo-zza be a temp_file-be az ominozus sort.

legnagyobb szam: hogy vannak elhelyezkedve a szamok? ugy ertem soronkent, vagy pl. egy sorban 324235261269 ez 12 kulon szamnak szamit?

bash-ban nem lehet double-okat osszehasonlitani, legalabbis en meg nem jottem ra hogyan. talan bc-t kell hasznalni. irjal inkabb c progit ra.

b

erre mondtam, hogy megnezed hany sor van benne, es mindig az n. sort catolod. ahol n persze minden catolas utan ugrik.

[quote:fe6ed12f74="jamal"]
beszúrás: bekér egy számot és egy szöveget, és a szöveget beszúrja
a fájlba a megadott számú sorba (és az eredetileg ebben a sorban lévő szöveg és az utána következő sorok egy sorral hátrébb kerülnek a
fájlban)

[code:1:fe6ed12f74]
n=szam
s="szoveg"
filename="file"

m=$(wc -l "$filename" |cut -f1 -d\ ) && head -n $(($n-1)) "$filename" >"$filename".$$ && echo "$s" >> "$filename".$$ && tail -n $(($m-$n+1)) "$filename" >>"$filename".$$ && mv "$filename".$$ "$filename"
[/code:1:fe6ed12f74]

törlés: bekér egy számot, és a fájlból törli a megadott számú sort (és
az utána következő sorok egy sorral előrébb kerülnek a fájlban)

[code:1:fe6ed12f74]
n=szam
filename="file"

m=$(wc -l "$filename" |cut -f1 -d\ ) && head -n $n "$filename" >>"$filename".$$ && tail -n $(($m-$n-1)) "$filename" >>"$filename".$$ && mv "$filename".$$ "$filename"
[/code:1:fe6ed12f74]

[quote:8a8dd4a768="blau"]
szerintem a torles: catolod soronkent, mellette porog a szamlalo, es ha a szamlalo=$VALTOZOD akkor nem catolja tovabb. szerintem.soronkent catolni meg vagy lehet rendesen egy paranccsal, vagy wc -l -lel megnezed hany sorbol all, es sed-el kivagod mindig az n-edik sort, es aztan echo $sor >> temp_file. bar ez utobbi nem tul elegans.

b

A sed-es megoldas nem tul elegans, de az ilyen jellegu problemakat nagyon elegansan meg lehet oldani ed szkriptekkel. Egyenesen a file-ban vegzed el a modositasokat, es nem kell felesleges allomanyokat letrehozni vagy pipeolni.

A kerdes csak az, hogy ebben a hazi feladatban szabad-e ed-et hasznalni. :lol:

időközben én is sed-del
csináltam meg a problémát csak én még a
törlést írtam meg de a másik tök uygan úgy lehet :)

ZHX

De a legnagyobb számról sajna lövésem sincs.

JJJA MIVEL LEHET AZT MEGCSINÁLNI HOGY
CSINÁLTAM EGY MENUT SELESTEL S HA
MONDJUK VÉGREHAJTOTTAM VMILYEN MŰVELETET AKKOR CSAK EGY ENTER
UTÁN TÉRJEN VISSZA A MENUBE??

Tehát pl töröltem egy sort s csak aztán lép vissza a menübe
ha egy enter ütöttem

Szal szerintetek a sed-del
meglehet keresni a legnagyobb számot?

Ja a sortőrlés csak ennyi
sed $sor'd' $inputfile >>ize.tmp
mv ize.tmp $imputfile
rm ize.tmp

Már csak a szám marad hátra

Most vettem észre hogy kellett csinálni
egy olyan szókeresőt ami meghatározza hogy hányszor fordul elő valami a fileban

én grep "minta" file -c
parancsal oldottam meg de azzal csak azzal
csak a sorok számát melyben
előfordul azt adja meg.

Szal azt hogy kell valaki szerint hogy azt is kiszámolja hogy
összesen hányszor fordul elő

echo "mintat kerek"
count=0
read minta
for i in `cat $input`; do
if [ $i = $minta ]; then
count=$[$count+1]
fi
done
echo "a keresett minta" $count"-ször furdul elő a szövegben"

Így jó lett a kereső számláló

Ezzel a módszerrel a számhasonlítás is megy így kész vagyok a feladattal