- 論壇徽章:
- 1
|
引號(" ')在shell編程中起著相當(dāng)重要的腳色,應(yīng)用得當(dāng),則程序易寫易讀,簡潔明快,否則,會讓人頭痛不已!兵書說“運(yùn)用之妙,存乎于心!”,下面就自己最近學(xué)習(xí)中的一點(diǎn)心得,與朋友們交流,希望得到大家的斧正!
其實在sed中使用shell變量相對來說還是比較簡單的,關(guān)鍵是引號的用法:
比如:
借用yoursmile朋友的數(shù)據(jù)
- cat file
- 1 192.148.99.253 [17/Jun/2003:11:25:44 /sc
- 2 192.148.99.253 [17/Jun/2003:11:18:21 /si
- 1 192.148.99.253 [17/Jun/2003:11:20:34 /sp
- 2 192.148.99.253 [17/Jun/2003:11:18:13 /ap
- 1 192.148.99.253 [17/Jun/2003:11:17:30 /hou/
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
- 3 192.93.108.187 [17/Jun/2003:14:39:11 /si
- 5 192.68.82.78 [05/Jun/2003:00:05:45 /hou/
- 9 192.68.82.78 [05/Jun/2003:00:05:45 /ss
- 4 192.228.210.10 [16/Jun/2003:09:29:30 /hou/
復(fù)制代碼 d=6
取文件的第六行,則
單引號
- sed -n ''"$d"'/p' file
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
復(fù)制代碼
雙引號
- sed -n "$d"p file or sed -n "$a9ur7n9vtp" file
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
復(fù)制代碼
結(jié)果完全相同。
又:
取文件的第1到第6行,則:
單引號:
- sed -n '1,'"$d"'p' file
- 1 192.148.99.253 [17/Jun/2003:11:25:44 /sc
- 2 192.148.99.253 [17/Jun/2003:11:18:21 /si
- 1 192.148.99.253 [17/Jun/2003:11:20:34 /sp
- 2 192.148.99.253 [17/Jun/2003:11:18:13 /ap
- 1 192.148.99.253 [17/Jun/2003:11:17:30 /hou/
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
復(fù)制代碼
雙引號:
- sed -n "1,$d"p file or sed -n "1,$a9ur7n9vtp" file
- 1 192.148.99.253 [17/Jun/2003:11:25:44 /sc
- 2 192.148.99.253 [17/Jun/2003:11:18:21 /si
- 1 192.148.99.253 [17/Jun/2003:11:20:34 /sp
- 2 192.148.99.253 [17/Jun/2003:11:18:13 /ap
- 1 192.148.99.253 [17/Jun/2003:11:17:30 /hou/
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
復(fù)制代碼
取第6行到文件尾
單引號:
- sed -n ''"$d"',$p' file
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
- 3 192.93.108.187 [17/Jun/2003:14:39:11 /si
- 5 192.68.82.78 [05/Jun/2003:00:05:45 /hou/
- 9 192.68.82.78 [05/Jun/2003:00:05:45 /ss
- 4 192.228.210.10 [16/Jun/2003:09:29:30 /hou/
復(fù)制代碼
雙引號:
- sed -n "$d,\$p" file or sed -n "$d,$"p
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
- 3 192.93.108.187 [17/Jun/2003:14:39:11 /si
- 5 192.68.82.78 [05/Jun/2003:00:05:45 /hou/
- 9 192.68.82.78 [05/Jun/2003:00:05:45 /ss
- 4 192.228.210.10 [16/Jun/2003:09:29:30 /hou/
復(fù)制代碼
如果上面的6保存在一個line的文件中(該文件中只此一行時!),則
單引號:
- sed -e ''"`cat line`"'p' file
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
復(fù)制代碼
雙引號:
- sed -n "`cat line`"p file
- 1 192.93.108.187 [17/Jun/2003:14:49:14 /sc
復(fù)制代碼
從上面的例子可以看出,引號的應(yīng)用,是乎是有講究的,只要靈活應(yīng)用,就可使代碼簡潔明快,看起來舒服,用起來舒心,寫起來方便!
簡而言之:凡是要引用shell變量時,最好使用雙引號“"”做sed的定界符,這樣會更方便些,但要使用雙引號一定要注意避免shell解釋sed命令,比如“$p”原意為打印文件末行,但shell會解釋為取變量p的值,因此在使用中要加以注意,可用“\$p”或“"$"p”等方式來解決此類問題。 |
|