看板 Linux 關於我們 聯絡資訊
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 _) 去掉 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.112.251.86
CP64:sed 's/-[0-9].*//g' 醬? 08/24 00:32
rickieyang:跟perl一樣的:sed "s/^\(.*\)-[0-9.,_][0-9.,_]*/\1/" 08/24 01:02
rickieyang:不過那個 () \1 是多餘: sed "s/-[0-9.,_][0-9.,_]*//" 08/24 01:03
感謝,我自點小修改 sed 's/-[0-9.,_][0-9.,_]*$//' 不然 xorg-fonts-100dpi-7.5.1 會變成 xorg-fontsdpi-7.5.1
LINGZ:請教二樓[0-9.,_]要出現兩次的目的是? 08/24 01:07
※ 編輯: newversion 來自: 140.112.251.86 (08/24 01:53)
rickieyang:因為他 perl 用了 +, 不是用 *, sed 沒用 + 可以用. 08/24 02:31
goldie:sed也有+但要跳脫\+或帶個-r參數開啟ERE模式就可直接用+了 08/25 20:39
goldie:例如 sed 's/-[0-9.,_]\+$//' 08/25 20:42
goldie:或著 sed -r 's/-[0-9.,_]+$//' 08/25 20:43
newversion:這算是POSIX嗎? 08/26 20:11
sppmg:sed -r 's/(.*)-.*$/\1/' 09/02 01:48