sed 的 regular expression - Linux

Table of Contents

bash-4.1.11 --> bash
akode-2.0.2_1 --> akode
ca_root_nss-3.12.11,1 --> ca_root_nss
我想把以上左邊變右邊,我會用 perl的 regular expression

^(.+)-(\d|\.|,|_)+ --> \1
這樣

但 sed 沒有 perl regexp,應該要怎麼用?

想把
-(數字 or . or , or _) 去掉


--

All Comments

Lucy avatarLucy2013-08-24
sed 's/-[0-9].*//g' 醬?
Hedwig avatarHedwig2013-08-25
跟perl一樣的:sed "s/^\(.*\)-[0-9.,_][0-9.,_]*/\1/"
Belly avatarBelly2013-08-27
不過那個 () \1 是多餘: sed "s/-[0-9.,_][0-9.,_]*//"
Victoria avatarVictoria2013-08-28
請教二樓[0-9.,_]要出現兩次的目的是?
George avatarGeorge2013-09-01
因為他 perl 用了 +, 不是用 *, sed 沒用 + 可以用.
Susan avatarSusan2013-09-05
sed也有+但要跳脫\+或帶個-r參數開啟ERE模式就可直接用+了
Daniel avatarDaniel2013-09-09
例如 sed 's/-[0-9.,_]\+$//'
Ina avatarIna2013-09-13
或著 sed -r 's/-[0-9.,_]+$//'
Ula avatarUla2013-09-14
這算是POSIX嗎?
Michael avatarMichael2013-09-15
sed -r 's/(.*)-.*$/\1/'