bash script

Fórumok

Sziasztok!

Ötleteket várnék:

Van két fájlom, az egyikbe 2 betűs sorok vannak vannak, a másikba több betűs sorok vannak. mind a két fájl azonos a sorszám. A kérdés az, hogy a két fájlt akarom úgy össze fűzni, hogy az első fájlom első betűje a második fájlom elejére kerüljön, majd az első fájl második betűje a második fájl utolsó betűje legyen, ezt hogy tudnám megoldani?

köszönöm

Hozzászólások

Ha csak bash-t szabad használni akkor pl.


while read f1 <&7 ; do
read f2 <&8
echo ${f1:0:1} ${f2} ${f1:1:1}
done 7< file1.txt 8< file2.txt

--
maszili

Ejnye! Most ebből mit fog szerinted tanulni? Mivel már mindegy, így leírom, én hogyan csináltam:


#!/bin/bash

file1='file1'
file2='file2'
outfile='result.txt'

exec 3<"$file1"
while read center; do
    read <&3
    echo "${REPLY:0:1}$center${REPLY:1:1}"
done <"$file2" >"$outfile"
exec 3>&-
exit 0

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Google translate?

--
The Wikipedia blackout is over. At last we can now find out what SOPA is.

Van két fájlom, az egyikben 2 betűs sorok vannak vannak, a másikban több betűs sorok vannak. Mind a két fájlban azonos a sorok száma. A kérdés az, hogy a két fájlt akarom úgy összefűzni, hogy az első fájlom első betűje a második fájlom elejére kerüljön, majd az első fájl második betűje a második fájl utolsó betűje legyen.
A kérdés az, hogy ezt hogy tudnám megoldani?

--
The Wikipedia blackout is over. At last we can now find out what SOPA is.

A sokszínűség kedvéért:
 cut -c1 file1.txt > fc1
 cut -c2 file1.txt > fc2
 paste -d "" fc1 file2.txt fc2 > kimenet.txt
 rm fc1 fc2

miert jobb neked, hogy keves phy ram eseten filesystem formatumban formazott diszkre irja ki, minthogy memoriaformatumban swapra?

A mostani filerendszerek journalozottak, a swap nem; a journaling miatt a filerendszer kiiras tobb IO muvelettel jar, mint a swapba kiiras.

jo, csak leirtam. Napi 10 ilyennel talalkozom, hogy jajj, csak memoriat ne egyunk. Pedig az azert van.

Azért az eseményszámba menne, ha vki az általános célú fájlrendszereivel összemérhető nagyságú swapot hozna létre általában, és az sem kevésbé volna rendkívüli, ha másvalaki direkte egy szkript kedvéért faragná át ilyenre a lemezét.

Azt persze nem mondom, hogy a lehetetlen eseménnyel esik egy tekintet alá...

Nem látom célszerűnek. Ha a kernelnek swap-elnie kell, akkor futás közben, az aktuális memóriafoglalások miatt kell valamit kilapoznia, ha a kilapozott process hozzá akar férnie a dolgaihoz, akkor azt visszatölteni. Ez így jelentős lassulást okoz, bár a rendszer legalább működőképes marad.

tr [:lower:] [:upper:] <<<locsemege
LOCSEMEGE

Demonstrációs célra álljon itt egy g(!)awk-féle megoldás is:


gawk -vFIELDWIDTHS="1 1" '{ c1=$1; c2=$2; getline < "f2"; print c1 $0 c2}' f1

Nekem is lenne egy kérdésem a témában:
Ebben a feltételben mi lehet a hiba?

while [[ ! -f $file || ! -h $file ]]

Ha esetleg szóban megfogalmaznád, mit szeretnél, akkor rábökném, hogy igen, vagy nem. :)

Így ugye minden nem reguláris és nem symlink file-ra marad a ciklusban. Tehát socket, directory, effélék. Olyan symlink-re, amelyik directory-ra mutat, szintén nem hajtódik végre a ciklus.

Ami a megfogalmazást illeti, így is lehet:

while [ ! -f "$file" -a ! -h "$file" ]; do

Vagy:

while ! [ -f "$file" -o -h "$file" ]; do

tr '[:lower:]' '[:upper:]' <<<locsemege
LOCSEMEGE

Egy nagyobb feladat elkezdéséhez szeretnék kérni egy kis ötletbeli segítséget.
Egy szövegben elgépelt szavakat kellene keresni egy szótár fájl segítségével. Ha a szótárban nem szerepel a szó meg kell nézni, hogy a szó betűinek változtatásával kapunk e a szótárban már szereplő szót. Főleg ez utóbbi rész a kérdéses még.
Nem a feladat megoldását kérném, csak egy kis segítséget az elindulásban. Előre is köszönöm!

Regexp: én azzal próbálkoznék, hogy a szótárfájlban szereplő szavak betűit sorban lecserélném vagy pontra, vagy valami hasonló helyettesítő megoldásra ([a..z], ilyesmi), és ezzel gyártanék egy új szótárfájlt. Ám ez brutális erőforrást ehet már egy közepes szótár mellett is.

Fuzzy keresés: a lucene tud ilyet, ám fogalmam sincs, hogy erre a problémára hogy lehet beidomítani.

Dátumoknál(illetve úgy általában) mit jelent a space padded formátum?

Általánosabban megfogalmazva a padding adott hosszra feltöltést, kiegészítést jelent. Számoknál általában a nulla használható értékváltozás nélkül, stringeknél a szóközt szokták hsználni erre a célra:

0011
0003
0999

    A
 BBBB
   CC

Mielőtt még valaki megkérdezi, hogy mi az a zero padding.