[問題] 大量 sed 取代文字,怎樣比較快

看板Linux作者 (mself)時間14年前 (2011/08/22 00:15), 編輯推噓6(604)
留言10則, 7人參與, 最新討論串1/1
dear 各位, 我有一個文字檔 a.txt,假設內容是 aaa bbb ccc ddd eee ... 我想要取代裡面的很多行, aaa -> AAA ccc -> CCC ... -> ... 請問用 sed 怎麼做比較快呢 我目前作法是寫很多個 sed sed -i 's/aaa/AAA/g' a.txt sed -i 's/ccc/CCC/g' a.txt sed -i 's/...... ' a.txt ... 雖然能達到效果,可是似乎有點慢 謝謝~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 203.73.50.227

08/22 00:17, , 1F
tr [a-z] [A-Z] < a.txt > A.txt
08/22 00:17, 1F

08/22 00:20, , 2F
sorry, aaa->AAA 是舉例,實際文字是沒有規則的
08/22 00:20, 2F

08/22 01:20, , 3F
tr '[:upper:][:lower:]' '[:lower:][:upper:]' < in > out
08/22 01:20, 3F

08/22 01:21, , 4F
或 tr '[a-z][A-Z]' '[A-Z][a-z]' < in > out 都可以 :)
08/22 01:21, 4F

08/22 08:04, , 5F
如果經常執行,檔案很大很多,用C/Java寫個程式會比較有效率
08/22 08:04, 5F

08/22 16:49, , 6F
把sed指令寫成檔案xxx 然後用 sed -f xxx A.txt
08/22 16:49, 6F

08/22 16:49, , 7F
你要問的是這個嗎?
08/22 16:49, 7F

08/22 18:06, , 8F
總之你沒有一定規則的話,可能就寫個對照表,一個一個跑(吧?)
08/22 18:06, 8F

08/22 18:39, , 9F
我想問的是,你的目的是要轉大寫嗎?
08/22 18:39, 9F

08/24 18:19, , 10F
sed 多個 expression 用 sed -e A -e B target_file
08/24 18:19, 10F
文章代碼(AID): #1EKIynEV (Linux)