Portál AbcLinuxu, 4. listopadu 2025 13:25
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// /}"
            
Zeptám se tedy jinak, vidím že to takto jednoduše nejde. 
Jak můžu odstranit mezery v řetězci před prvním znakem a za posledním znakem? Díky
            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.