Portál AbcLinuxu, 15. května 2025 18:34
tohle funguje super cat input.txt | sed 's/[ \t]*$//' > output.txt ale tohle ne "$HEADING" | sed -e 's/^[ \t]*//' > "$HEADING"poradí mi někdo jiný způsob? Děkuji
Řešení dotazu:
cat
? A co vlastně máš v proměnné $HEADING
?
sed -e 's/^[ \t]*//' <"$HEADING" >output.txt
A k čemu tam máš tenpotřebuji to upravit v té proměnné, ne to posílat do souboru, jde to? Ten cat je asi uklep.cat
? A co vlastně máš v proměnné$HEADING
? V proměnné HEADING je pouze čistý text, nic jiného tam neni + samozřejmě nadbytečné mezery... ;)sed -e 's/^[ \t]*//' <"$HEADING" >output.txt
HEADING=$(echo $HEADING | sed -e 's/../../')
HEADING
ktera odkazuje na nejaky retezec, v tomto retezci chci odstranit vsechny mezery. O jakych datech aplikace tu mluvime?
HEADING=$(echo $HEADING | sed -e 's/../../')
Tento kód žádné mezery neodstraní...
HEADING=$(echo "$HEADING" | sed -e 's/^[ \t]*//')ale dá se to i zkrátit a zjednodušit:
HEADING="${HEADING// /}"
HEADING=$(echo "$HEADING" | sed 's/^[ ]*//;s/[ ]*$//')
HEADING=$(echo "$HEADING" | sed 's/[ ]\+/ /g;s/^ //;s/ $//')K čemu to tak precizně potřebuješ? Běžně to programům nevadí.
HEADING=" dffdsf ds sfdf sdf sdf sdf sdf sf reree we wr wr " HEADING=$(echo $HEADING) echo "$HEADING" // dffdsf ds sfdf sdf sdf sdf sdf sf reree we wr wr
$ shopt -s extglob $ a="1 2 3 " $ a="${a//+( )/ }" $ a="${a# }" $ a="${a% }" $ echo "=$a=" =1 2 3=Ked to chces aj s odstranovanim tabelatorov, tak 3. riadok nahradit:
a="${a//+([$IFS])/ }"A komu sa nepaci trik s IFS, tak ho nahradit
spacetab=\ $'\t' a="${a//+([$spacetab])/ }"
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.