[問題] 請問sed 取代 ' 的語法

看板Linux作者 (冰色太陽)時間16年前 (2009/09/09 08:53), 編輯推噓4(4016)
留言20則, 5人參與, 最新討論串1/2 (看更多)
各位版友好 想請問一下一個 sed 取代的問題 目前有一個檔案 a.txt 內容含有 'h','t','t','p',':','/','/' 用指令 sed 's/,//g' a.txt > b.txt 得到b.txt的內容為 'h''t''t''p'':''/''/' 請問要怎麼才能把 ' 取代掉呢? 得到 http:// 因為用sed 's/'//g' b.txt > c.txt 都一直出錯 >_< -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 122.123.137.173

09/09 08:58, , 1F
/\'/
09/09 08:58, 1F

09/09 09:27, , 2F
sed 's/\'//g' b.txt>c.txt 還是NG耶 囧
09/09 09:27, 2F

09/09 10:23, , 3F
sed "s/'//g" b.txt > c.txt
09/09 10:23, 3F

09/09 10:25, , 4F
我猜系統把前兩個單引號當一對了
09/09 10:25, 4F

09/09 10:25, , 5F
居然還有這招 it's work 謝謝樓上 ^^
09/09 10:25, 5F

09/09 10:30, , 6F
還有一招: sed 's/['\'',]//g' b.txt > c.txt
09/09 10:30, 6F

09/09 10:34, , 7F
['\'',] 這是什麼意思?
09/09 10:34, 7F

09/09 10:36, , 8F
原來是 s/[',]//g (取代所有的逗點和單引號) 拆成兩部份
09/09 10:36, 8F

09/09 10:37, , 9F
's/[' + \' + ']//g' (其實是3部份,呵...)
09/09 10:37, 9F

09/09 10:38, , 10F
用這個重組的方式,可以克服同時有雙引號和單引號的字串
09/09 10:38, 10F

09/09 10:39, , 11F
更正: 's/[' + \' + ',]//g'
09/09 10:39, 11F

09/09 10:42, , 12F
所以是\' => " 這個 ', => , 的意思嗎?
09/09 10:42, 12F

09/09 10:45, , 13F
在shell裡要特別處理的是單引號('),所以要變成\'
09/09 10:45, 13F

09/09 10:47, , 14F
其他的部份只要用"夾"的就可以了. 能理解吧?
09/09 10:47, 14F

09/09 10:49, , 15F
(s/[) + (\') + (,]//g) = s/[',]//g
09/09 10:49, 15F

09/09 10:50, , 16F
謝謝p大指導~受教了 ^^
09/09 10:50, 16F

09/09 11:11, , 17F
^^
09/09 11:11, 17F

09/09 13:58, , 18F
echo "'h','t','t','p',':','/','/'" | tr -d ",'"
09/09 13:58, 18F

09/09 14:00, , 19F
sed "s/[,']//g" a.txt > b.txt
09/09 14:00, 19F

09/09 14:02, , 20F
tr -d ",'" < a.txt
09/09 14:02, 20F
文章代碼(AID): #1AflnpDQ (Linux)
文章代碼(AID): #1AflnpDQ (Linux)