Új hozzászólás Aktív témák
-
vargalex
félisten
Érdekes, mert mennie kell a sed-es megoldásnak:
[gavarga@gavarga-5500 test]$ echo "Áuu, hosszú: ú" > forras.txt
[gavarga@gavarga-5500 test]$ sed 's/./\0\n/g' forras.txt
Á
u
u
,
h
o
s
s
z
ú
:
ú
A file is biztosan UTF-8-as? Mit mond nálad a
file forras.txt
(vagy esetedben, ha file a forrás állomány neve a
file file
) parancs?Ezt kellene, hogy visszaadja:
[gavarga@gavarga-5500 test]$ file forras.txt
forras.txt: Unicode text, UTF-8 text
Szerk: egyáltalán GNU sed-et használsz? Nem valami embedded rendszeren lévőbusybox
-os sed-et? -
dabadab
titán
Ez a GNU cut bugja: a -c-t pont úgy kezeli, mint a -b-t, vagyis annak ellenére, hogy elvileg kellene neki, valójában egyáltalán nem támogatja a multibyte karaktereket.
Szerencsére a bash maga is tud vagdosni stringeket és az rendesen csinálja:#! /bin/bash
for i in {0..49}
do
cat file | while read ; do
echo ${REPLY:$i:1}
done
done
exit
-
Headless
őstag
Hát vagy find-al keresed meg és futtatod amit kell
find $x -type f -exec ....
vagy
a meglévő for ciklusba teszel egy ellenörzést hogy fájl-e...
valahogy ígyif [ -f "$file" ];then
echo "file"
fiha van printf parancsod, akkor megfelelő számú szóközt tudsz csinálni valahogy így. azt meg kicserélheted #-re de szerintem nem éri meg, lehet van jobb megoldás is.
printf "%33s" |sed "/ /#/g"
-
bambano
titán
felejtsd el ezt a hétfő ellenőrizgetést.
nem az a jó módszer, hogy elindítod minden nap, és megnézed, hétfő van-e, hanem az, hogy csak hétfőn indítod el.a hozzáfűzés meg lehet, hogy azért nem megy, mert könyvtár vagy könyvtárra mutató link is van az írásos könyvtárakban.
-
Headless
őstag
-
Headless
őstag
Szimplán $0 helyett $1,$2,$3 stb-ket használsz, persze a field separator nem mindegy, hogy ; szóköz vagy mi. Pl
Fájl:
11;12;13;14
21;22;23;24awk -F";" '{print $3}' path
13
23Persze a field separatort magában az awk-ban is tudod változtatni az FS változóként ahogy a kimeneti elválasztót is az OFS-t.
-
dabadab
titán
"a sed-el lecseréltem a "."-t vesszőre a file-ben"
Ahelyett inkabb ajanlanam a script elejere a kovetkezo sort:
export LC_NUMERIC="C"Ez fixen beallitja a locale-t egy mindenhol meglevo darabra, ahol tizedespont van, ha viszont fixen lecsereled a pontot vesszore, az nem fog mukodni akkor, ha pontot hasznalo locale-lel akarod futtatni.
"Nekem kerekítés nélkül kell."
Akkor vagd le a felesleges tizedesjegyeket mielott atadnad a printf-nek (a printf jelen esetben csak azert kell, hogy a kettonel kevesebb tizedesjegyet tartalmazo szamok vegere is odarakja oket, vagyis hogy az 5-bol 5.00 legyen)
X=4.12812
printf '%02.f\n' $(echo $X | sed 's/\(\...\).*$/\1/') -
dabadab
titán
Egeszen pontosan mit akarsz? Tenylegesen ilyen ertekre kerekiteni a szamot vagy csak kiiratni az elso ket tizedesjegyet vagy ket tizedesre kerekiteni es ugy kiiratni?
Ha az elso ketto az erdekes, akkor a printf a legegyszerubb (az elso a kerekites, a masik a kerekitve kiiratas):
X=4.4789
Y=$(printf '%0.2f' $X)
printf '%0.2f\n' $X -
-
bambano
titán
alapvetően több lehetséges megoldás van, mind a find-en alapszik.
vagy megkeresteted az összes könyvtárat:find kezdokonyvtar -type d
és ezeket feldoldoztatod a w3m-mel csillagozva, vagy megkeresteted az összes html fájlt adott könyvtártól lefelé, és ezeket egyesével dolgozod fel:
find kezdokonyvtar -name '*.html'
-
makro
senior tag
Picit másként:
echo "Összes szám: "; sed 's/ /\n/g' text.file| grep "^[0-9]";echo;
echo "Egész számok: "; sed 's/ /\n/g' text.file | grep "^[0-9]*$";echo;
echo "Kétjegyű egész számok: "; sed 's/ /\n/g' text.file | grep "^[0-9][0-9]";echo;
echo "Tört számok: "; sed 's/ /\n/g' text.file | grep "^[0-9]*[,].[0-9]*";echo;
echo "Szavak: "; sed 's/ /\n/g' text.file | grep "^[a-zA-Z]*$";echo; -
Jester01
veterán
Nem teljesen tiszta mit szeretnél, de első tippem ez: sed -n "2,${g}p"
Másik kérdésre: igen, meg lehet adni regexet, ami alapesetben a szónak is megfelel ha éppen nincs benne speciális karakter. A szavakat perjelek közé kell tenni vagy az alternatív \c...c delimitációt használni. Tehát sed -n '/ettől/,/idáig/'
-
Jester01
veterán
Megfelelő locale beállítás mellett elvileg az alnum osztályban benne kell legyenek az ékezetes betűk is. Ha nem, akkor fel kell őket sorolni. Az aposztrófot pedig úgy a legegyszerűbb beletenni ha dupla idézőjelre váltunk:
sed "s/[[:alnum:]']//g; s/\(.\)/\1\n/g" abc | sort -u
-
bambano
titán
ja, látom már, neked nem az a problémád, hogy hosszú a szám, hanem az, hogy a gnumeric nem veszi észre, hogy tizedespontot használtál tizedesvesszőnek. A tizedespontot a magyar nyelv szabályai szerint ezres elválasztónak tekinti.
próbáld meg ideiglenesen angolra átállítani a linuxodat és úgy importálni. vagy próbáld meg libreoffice-vel az importot. -
bambano
titán
mondom, nem fork bombázunk
a sed másik jó tulajdonsága, hogy a keresés-csere parancsokban nem fixen bedrótozva / jel van, hanem az első karakter a delimiter az s után. ezt akkor érdemes használni, ha vagy a mintában, vagy a cserélendő stringben van (sok) /
tehát:
grep '<title>' |
sed -e 's,^.*<title>[ ]*,,' -e 's,[ ]*</title>.*$,,' >> $d/title.txt -
snowdog
veterán
Az LF az a soremelés vezérlés. Ha kitörlöd, akkor mindent egybe fog írni. Normál szövegnézetben nem jelenik meg. Gondolom valamit bekapcsoltál hogy láthatóvá vált.
Amit alul írtál mintát, az pont ugyan az, ugyanis ott is szerepel az LF (Line Feed, soremelés), csak nem látod.
Új hozzászólás Aktív témák
- 18 éve! Billentyűzet magyarítás magyarosítás. Festés vagy lézerezés és egyebek! 3 lehetőség is van.
- LG 65B4 - 65" OLED - 4K 120Hz 1ms - NVIDIA G-Sync - FreeSync Premium - HDMI 2.1 - PS5 és Xbox Ready
- Apple iPhone SE 16GB, Kártyafüggetlen, 1 Év Garanciával
- AKCIÓ! Dell Alienware M17 R3 Gamer notebook - i7 10750H 16GB DDR4 1TB SSD RTX 2070 8GB WIN10
- Alkatrészt cserélnél vagy bővítenél? Nálunk van, ami kell! Enterprise alkatrészek ITT
Állásajánlatok
Cég: PC Trade Systems Kft.
Város: Szeged
Cég: CAMERA-PRO Hungary Kft
Város: Budapest