[問題] 取代的技巧(08/10 23:15)
個人習慣用內建軟體,所以10.04以來都用empathy
但可能因為是軟體?可能因為是網路?可能是因為特殊原因?
有時後會漏訊
發現用pidgin漏訊時會有提醒,這樣可以知道我哪裡漏訊了
所以打算改用pidgin
我想把過去的empathy歷史訊息轉移到pidgin
所以需要一些取代技巧
爬文爬到這篇 #1AtldtLL (Linux) [ptt.cc] [分享] 搜尋並取代 某些文件裡面
嘗試之後是非常之妙用
但我有一些問題點
pidgin歷史訊息格式:
<font color="#A82F2F"><font size="2">(18時35分41秒)</font>
<b>帳號</b></font>訊息<br/>
empathy歷史訊息格式:
<message time='20100710T07:44:16' cm_id='0' id='帳號' name='名稱'
token='' isuser='true' type='normal'>訊息</message>
在pidgin部份,color會因user跟client不同而有不同的兩種顏色
但empathy在時間以前的格式固定是<message time='
所以我沒辦法單靠前段用基本的取代法來轉換成pidgin的格式
必須配合中段的id來辨別color裡面要放哪種顏色
請問這該怎麼做呢?
--
http://qiqi2k7.blogspot.com/
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 123.193.204.17
※ 編輯: Qiqi 來自: 123.193.204.17 (08/10 00:30)
→
08/10 00:35, , 1F
08/10 00:35, 1F
→
08/10 00:40, , 2F
08/10 00:40, 2F
→
08/10 00:41, , 3F
08/10 00:41, 3F
→
08/10 00:41, , 4F
08/10 00:41, 4F
→
08/10 00:42, , 5F
08/10 00:42, 5F
→
08/10 12:35, , 6F
08/10 12:35, 6F
推
08/10 13:09, , 7F
08/10 13:09, 7F
感謝Rickz版友提供以下程式碼
#!/bin/bash
MYID="Rickz"
IFS='
'
for i in `cat $1`;do
echo "$i" |grep -q "$MYID" && COLOR="#16569E" || COLOR="#A82F2F"
echo "$i"|awk -F\' '{print "<font color=\"'"$COLOR"'\"><font
size=\"2\">('"$(date -d $(echo "$i"|awk -F\' '{print $2}') +%H時%M分%S秒
)"')</font><b>"$8"</b></font>'"$(echo "$i"|sed
"s/.*normal'>\(.*\)<\/message>/\1/g")"'<br/>"}'
done
可惜我不懂怎麼去用它
不過至少有這個範例讓我知道要從何去學習
所以我上網查了 cat、grep、awk、sed 這幾個指令
不過也只學了最基本的用法,還沒辦法靈活運用
以下是我目前學到的結果
cat 20100710.log | grep 'qiqi' | sed 's/message/AAA/g'
我成功的把該檔案"只有我帳號"的那些資料行取代並"顯示"
但僅僅只有顯示並沒有寫入,查到關鍵字是sed要加w,但我不知道該怎麼加
而且版友提供的範例並沒有用到sed的w部份,所以事實上不用?
※ 編輯: Qiqi 來自: 123.193.204.17 (08/10 23:15)
推
08/12 08:01, , 8F
08/12 08:01, 8F
※ 編輯: Qiqi 來自: 123.193.204.17 (08/12 20:06)
討論串 (同標題文章)
以下文章回應了本文:
完整討論串 (本文為第 1 之 2 篇):