awk - 可以用來分隔字串
例:
-F:分隔符號delimiter
ex:
root@yuan-laptop:~# echo A,B,C | awk -F ',' '{ print $1"-"$2"-"$3}'
A-B-C
cut - 每行分割字串
-c 計算幾個位元
-d 分隔符號
-fn 取第n個被分隔符號分割的字串
ex:
root@yuan-laptop:~# echo 192.168.1.100 | cut -c 5-7
168
root@yuan-laptop:~# echo 192.168.1.100 | cut -d '.' -f 1
192
root@yuan-laptop:~# echo 192.168.1.100 | cut -d '.' -f 1,3,4
192.1.100
root@yuan-laptop:~# echo 192.168.1.100 | cut -d '.' -f 3-4
1.100
tr - 每行刪除或取代
ex:
1.小寫變大寫
root@yuan-laptop:~# echo ABCxyz | tr [a-z] [A-Z]
ABCXYZ
2.刪除'.'
root@yuan-laptop:~# echo 192.168.1.100 |tr -d '.'
1921681100
3.取代
root@yuan-laptop:~# echo 192.168.1.100 |tr -s '.' '-'
192-168-1-100
sed - 新增刪除取代,印出特定行數
-n 將stdin的訊息不印出,只印出sed處理過得字串
p列印
例如:
列印出第1-2行的資料
root@yuan-laptop:~# cat /etc/passwd | sed -n '1,2p'
root:x:0:0:root:/root:/bin/bash
daemon:x:1:1:daemon:/usr/sbin:/bin/sh
綜合運用
1.取MAC address
ifconfig eth2 | sed -n '1p' | awk -F' ' '{print $5}'
2.取IP address
ifconfig eth2 | grep 'inet addr' | awk -F':' '{print $2}'| cut -d ' ' -f1
2012年8月28日 星期二
2012年7月3日 星期二
有時候因為工作需要連接不同device,各家產品的ip區段不一樣時常需要手動切換
這時候可以使用虛擬網卡分別設定不同區段
Ubuntu
vim /etc/network/interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1 eth1:0 eth1:1 eth1:2
#auto eth1:0
iface eth1:0 inet static
address 10.0.0.100
netmask 255.0.0.0
network 10.0.0.0
#auto eth1:1
iface eth1:1 inet static
address 169.254.0.100
netmask 255.255.0.0
network 169.254.0.0
#auto eth1:2
iface eth1:2 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
#auto eth1
iface eth1 inet dhcp
XP:
是在一張網卡上設定多ip,不過壞處是如果要改回dhcp還是必須變動
@echo off
netsh interface ip set address name="區域連線 2 " source=static addr=169.254.0.200 mask=255.0.0.0 gateway=169.254.0.1 gwmetric=30
netsh interface ip add address name="區域連線 2" 10.0.0.200 255.0.0.0 gateway=10.0.0.2 gwmetric=30
netsh interface ip add address name="區域連線 2 " 192.168.1.200 255.255.255.0 gateway=192.168.1.1 gwmetric=30
不過偶爾要小心如果發現設定完後不能透過另外一張網卡上網(ex:eth0,區域連線),通常需要手動調整routing table的順序
這時候可以使用虛擬網卡分別設定不同區段
Ubuntu
vim /etc/network/interface
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth1 eth1:0 eth1:1 eth1:2
#auto eth1:0
iface eth1:0 inet static
address 10.0.0.100
netmask 255.0.0.0
network 10.0.0.0
#auto eth1:1
iface eth1:1 inet static
address 169.254.0.100
netmask 255.255.0.0
network 169.254.0.0
#auto eth1:2
iface eth1:2 inet static
address 192.168.1.100
netmask 255.255.255.0
network 192.168.1.0
#auto eth1
iface eth1 inet dhcp
XP:
是在一張網卡上設定多ip,不過壞處是如果要改回dhcp還是必須變動
@echo off
netsh interface ip set address name="區域連線 2 " source=static addr=169.254.0.200 mask=255.0.0.0 gateway=169.254.0.1 gwmetric=30
netsh interface ip add address name="區域連線 2" 10.0.0.200 255.0.0.0 gateway=10.0.0.2 gwmetric=30
netsh interface ip add address name="區域連線 2 " 192.168.1.200 255.255.255.0 gateway=192.168.1.1 gwmetric=30
不過偶爾要小心如果發現設定完後不能透過另外一張網卡上網(ex:eth0,區域連線),通常需要手動調整routing table的順序
2012年5月21日 星期一
[Makefile]每個.c檔編譯一個執行檔
有時候常常需要寫點小程式來驗證
需要每個點.c檔產生一個執行檔
這時候Makefile要怎麼寫呢?
EXEC = filename1 filename2 filename3
all: $(EXEC)
$(EXEC):
gcc $@.c -o $@
clean:
rm -rf *.o $(EXEC)
filename1 filename2 filename3就是你的.c檔的名稱並且用相同名稱來產生一個執行檔
之後如果要多編譯一個.c只要把檔案名稱加到EXEC底下就OK了
需要每個點.c檔產生一個執行檔
這時候Makefile要怎麼寫呢?
EXEC = filename1 filename2 filename3
all: $(EXEC)
$(EXEC):
gcc $@.c -o $@
clean:
rm -rf *.o $(EXEC)
filename1 filename2 filename3就是你的.c檔的名稱並且用相同名稱來產生一個執行檔
之後如果要多編譯一個.c只要把檔案名稱加到EXEC底下就OK了
2012年5月17日 星期四
[IPv6]使用gogoclient取得ipv6 address上網
在XP下有時候要測試ipv6的是否能夠瀏覽IPv6的網頁
首先確定你的電腦已經能夠過IPv4上網
參考:
http://www.rd.ipv6.org.tw/?page_id=48
1.下載TB Client軟體, [ 32位元 ] [ 64位元 ]
2.安裝完後隨便選一家ISP免帳號連線
我選的是台灣固網hg.tfn.net.tw
3.連線成功後取到IPV6的IP
4.利用ipv6.google.com作測試
在Firefox裡面連線
http://http://ipv6.google.com/
5.測試是否能用nslookup查詢到ipv6 address
cmd->nslookup->type=aaaa->ipv6.google.com
> ipv6.google.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
ipv6.google.com canonical name = ipv6.l.google.com
ipv6.l.google.com AAAA IPv6 address = 2404:6800:8003::63
6.直接用IPv6連線
http://[2404:6800:8003::63]
7.你也可以直接用這個網頁測試是否有IPv6的能力
http://ipv6day.tw/20helper.html
首先確定你的電腦已經能夠過IPv4上網
參考:
http://www.rd.ipv6.org.tw/?page_id=48
1.下載TB Client軟體, [ 32位元 ] [ 64位元 ]
2.安裝完後隨便選一家ISP免帳號連線
我選的是台灣固網hg.tfn.net.tw
3.連線成功後取到IPV6的IP
4.利用ipv6.google.com作測試
在Firefox裡面連線
http://http://ipv6.google.com/
5.測試是否能用nslookup查詢到ipv6 address
cmd->nslookup->type=aaaa->ipv6.google.com
> ipv6.google.com
Server: google-public-dns-a.google.com
Address: 8.8.8.8
Non-authoritative answer:
ipv6.google.com canonical name = ipv6.l.google.com
ipv6.l.google.com AAAA IPv6 address = 2404:6800:8003::63
6.直接用IPv6連線
http://[2404:6800:8003::63]
7.你也可以直接用這個網頁測試是否有IPv6的能力
http://ipv6day.tw/20helper.html
2012年5月14日 星期一
Makefile debug筆記
有時候編譯SDK時只知道大概錯誤出現在哪裡,卻不知道細節
可以使用以下指令看詳細makefile執行過程
Makefile debug option
http://oreilly.com/catalog/ make3/book/ch12.pdf
ex:
make --debug //開啟debug message
make --just print *> make.log //只列出makefile展開後的過程而不執行
這樣就可以知道進一步的細節拉
2012年4月23日 星期一
Zigbee與NFC簡單比較
簡單來說兩者都屬於無線傳輸的一種,Zibgee較適合用於sensor network or 家用遙控技術上,NFC則算是RFID的一種應用於電子錢包&商品查詢&付費等等,最近中華電信也推出NFC皮套的服務,可以用於電子付款用
Zigbee跟NFC我發現的最大差別在於
1.距離(10~75m vs <20cm )
2.無線頻率(2.4G/868M/915M vs 13.65MB) - 當zigbee走2.4G可能會跟一般家用wifi干擾到
3.速度(10~250kbps vs 425kbps)
4.價錢(NFC比zigbee來的便宜)
參考:
http://www.cteccb.org.tw/pdf/IECQ-50-7.pdf
1.zigbee介紹
http://zh.wikipedia.org/wiki/ZigBee
2.NFC介紹
http://www.gs1tw.org/twct/gs1w/download/7.pdf
3.悠遊卡NFC背夾 讓iPhone 4也能當信用卡
http://mag.udn.com/mag/digital/storypage.jsp?f_MAIN_ID=323&f_SUB_ID=2952&f_ART_ID=359451
Zigbee跟NFC我發現的最大差別在於
1.距離(10~75m vs <20cm )
2.無線頻率(2.4G/868M/915M vs 13.65MB) - 當zigbee走2.4G可能會跟一般家用wifi干擾到
3.速度(10~250kbps vs 425kbps)
4.價錢(NFC比zigbee來的便宜)
參考:
http://www.cteccb.org.tw/pdf/IECQ-50-7.pdf
1.zigbee介紹
http://zh.wikipedia.org/wiki/ZigBee
2.NFC介紹
http://www.gs1tw.org/twct/gs1w/download/7.pdf
3.悠遊卡NFC背夾 讓iPhone 4也能當信用卡
http://mag.udn.com/mag/digital/storypage.jsp?f_MAIN_ID=323&f_SUB_ID=2952&f_ART_ID=359451
在linux下trace code的神兵- cscope
因為工作的關係常常需要在linux下trace code
這裡分享的是如何利用vim+cscope去trace code
當然如果你覺得Source insight已經很夠用的話就可以自動略過這篇文章
首先先安裝相關套件
拿Fedora為例
yum install cscope
yum install ctags
然後利用下面的myscope.sh去建立database以利trace
#!/bin/sh
#1.搜尋相關興趣的副檔名
find . -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.cpp" -name "*.pp" > cscope.files
#2.根據找到的檔案做關連
cscope -bkq -i cscope.files
ctags -R
接著打開vim
cs add cscope.out //加入資料庫
接著就可以開始trace code拉
使用方法
s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文
例如想搜尋foo函數定義的地方
:cs f g foo
或者是全部檔案有出現foo的函數/變數
:cs f s foo
或者是想搜尋example.c這個檔案在哪的地方
:cs f f example.c
其他的功能就自已去玩囉
參考連結:
http://www.cnblogs.com/jianyungsun/archive/2011/07/24/2115298.html
這裡分享的是如何利用vim+cscope去trace code
當然如果你覺得Source insight已經很夠用的話就可以自動略過這篇文章
首先先安裝相關套件
拿Fedora為例
yum install cscope
yum install ctags
然後利用下面的myscope.sh去建立database以利trace
#!/bin/sh
#1.搜尋相關興趣的副檔名
find . -name "*.h" -o -name "*.c" -o -name "*.cc" -o -name "*.cpp" -name "*.pp" > cscope.files
#2.根據找到的檔案做關連
cscope -bkq -i cscope.files
ctags -R
接著打開vim
cs add cscope.out //加入資料庫
接著就可以開始trace code拉
使用方法
s: 查找C语言符号,即查找函数名、宏、枚举值等出现的地方
g: 查找函数、宏、枚举等定义的位置,类似ctags所提供的功能
d: 查找本函数调用的函数
c: 查找调用本函数的函数
t: 查找指定的字符串
e: 查找egrep模式,相当于egrep功能,但查找速度快多了
f: 查找并打开文件,类似vim的find功能
i: 查找包含本文件的文
例如想搜尋foo函數定義的地方
:cs f g foo
或者是全部檔案有出現foo的函數/變數
:cs f s foo
或者是想搜尋example.c這個檔案在哪的地方
:cs f f example.c
其他的功能就自已去玩囉
參考連結:
http://www.cnblogs.com/jianyungsun/archive/2011/07/24/2115298.html
訂閱:
意見 (Atom)
