1. 程式人生 > >shell中vi替換特殊字元(製表符\t等)的方法

shell中vi替換特殊字元(製表符\t等)的方法

今天看shell教程,看了下特殊字元裡面還真不少,順便練下手

echo ------------------------------------
echo "|a\t|ab\t|abc\t|abcd\t|abcde\t|abcdef\t|"
echo -----------------------------------_
echo "|\v|"

 輸出還不錯 

------------------------------------
|a	|ab	|abc	|abcd	|abcde	|abcdef	|
-----------------------------------_
|
 |

不過還不理想

算了再改一下 

echo ------------------------------------
echo "|\ta\t|\tab\t|\tabc\t|\tabcd\t|\tabcde\t|\tabcdef\t|"
echo -----------------------------------_
echo "|\v|"

看下輸出內容 

------------------------------------
|	a	|	ab	|	abc	|	abcd	|	abcde	|	abcdef|
-----------------------------------_
|
 |

太難看了,不居左,不居右,也不居中,算了

該回去,

等等,怎麼改,一個一個的\t刪除嗎 ?

對了 vi裡嗎有個替換功能,好就用它 

echo ------------------------------------
echo "|\ta\t|\tab\t|\tabc\t|\tabcd\t|\tabcde\t|\tabcdef\t|"
echo -----------------------------------_
echo "|\v|"
~                                                                                                                                                                                     
:,$s/\ta/a/g

恩應該沒問題,回車輸出 

E486:找不到模式:\ta

怎麼回事 

改一下:

:,$s/“\ta”/a/g

看下輸出 

E486:找不到模式:“\ta”

還是不對,看來雙引號加上就直接預設雙引號了,不能加,怎麼回事 

好吧在改:

:,$s/\\ta/a/g

看下輸出:

6次替換,共1行

哈哈 成功了,

貌似很神奇的東西,原來不是網上說的直接替換這些東西,

想這些特殊字元一定要轉意再轉移之後才能用

比如 要匹配aa 那麼:,$s/aa/vv/g這樣就沒問題,全域性替換aa為bb

如果要匹配\t 把麼必須:,$s/\\t/tab/g,這樣就全域性替換製表符為tab字元

恩 記錄一下 

2013-02-28 

我了個去 二月就28天