Portál AbcLinuxu, 18. prosince 2025 20:41
DATA="Ahoj&Svete!"
while IFS="&" read A B ; do
echo "$A $B"
done <<< $DATA
# OUTPUT: "Ahoj Svete!"
Problémem je, že do proměnné IFS nelze vložit řetězec, ale vždy jen jeden znak. Potřeboval bych však psát něco takového:
DATA="AhojANDSvete!"
while IFS="AND" read A B ; do
echo "$A $B"
done <<< $DATA
# OUTPUT: " hojANDSvete!"
Z výstupu jasně plyne, že IFS může obsahovat jen jeden znak. Rád bych měl funkci SPLIT, která by byla jakýmsi "workaroundem" a umožnila mi asi takovýto zápis:
DATA="AhojANDSvete!"
while SPLIT "AND" A B ; do
echo "$A $B"
done <<< $DATA
# OUTPUT: "Ahoj Svete!"
Nebo nějak podobně. Jde mi o tu funkci SPLIT.
Bohužel se mi ne a ne podařit takovou funkci v čistém BASHi napsat. AWK, SED ani jiný nástroj z různých důvodů nemohu použít. Jen čistý BASH. Děkuji za vaše nápady.
V awku je to trivka (awk -F AND), v bashi mě napadá jedině
string="${string//AND/|}"
IFS="|"
ale nesmíš v tom řetězci mít |, což asi máš, jinak by ses takhle neptal...
man bash.
Děkuji.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.