Loading [MathJax]/jax/output/HTML-CSS/config.js
Ask Your Question
1

sed+backreference na solarisu

asked Dec 16 '14

stekl.h gravatar image

updated Dec 16 '14

Miro Hrončok gravatar image

Zdravím, snažím se přinutit sed, aby vytisknul poslední znak v řetězci. Na linuxu mi funguje

echo "this is Sparta" | sed 's/\(.*\)\(.$\)/\2/'
a

Na solarisu mi ovšem ten samý příkaz hodí zpět celý řetězec

echo "this is Sparta" | sed 's/\(.*\)\(.$\)/\2/'
this is Sparta

Myslel jsem si, že problém bude část .* a zkoušel použít znak +, ale bez úspěchu. Poradil by někdo? :)

add a comment

1 Answer

Sort by » oldest newest most voted
1

answered Dec 16 '14

Josef Kokeš gravatar image

Ten váš regexp je trochu zvláštní. Na pohled v něm nevidím nic, co by mělo vadit, ale rozhodně bych to zapsal jinak:

echo "this is Sparta" | sed 's/^.*\(.\)$/\1/'

Ukotvil bych výraz k začátku (to by nemělo být potřeba, protože RE jsou hladové a .* by měla sežrat všechno od začátku řetězce, ale proč riskovat), vyhodil bych závorky kolem té části, kterou nepotřebuju (když ji nechci vytahovat, tak nepotřebuju závorky) a vyhodil bych $ až za závorku. Co jsem si zkoušel váš kód, tak to zahrnutí stringu do závorky je příčinou, proč vám to na Solarisu nefunguje správně, ale důvod neznám - z hlediska regexpů v tom není rozdíl, ale třeba je to nějaká chyba v Solarisím sedu.

link

Comments

Díky!

stekl.h (Dec 16 '14)
add a comment

Your answer

Please start posting your answer anonymously - your answer will be saved within the current session and published after you log in or create a new account. Please try to give a substantial answer, for discussions, please use comments and please do remember to vote (after you log in)!

Add answer

[hide preview]

Question tools

Follow
1 follower

Stats

Asked: Dec 16 '14

Seen: 79 times

Last updated: Dec 16 '14