grep檔案裡的特殊字元字串 - Linux

By Victoria
at 2014-10-16T23:02
at 2014-10-16T23:02
Table of Contents
版友好
有個grep特殊字元的問題想請教
Q:
若想在檔案裡 搜尋特定字串如右 ~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ
假設有一個隨機檔案data.txt內容是
AA="XXX223"
BB=a132423davqef1
CC='OOOOOOOO'
DD="~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ"
EE=e12eee eqwf
發現因為特殊字元的關係 ex: * [
下面指令會出現問題
我試過
(雙引號)
cat data.txt | grep "~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ" => fail
(雙引號, 特殊字元前面加\)
cat data.txt | grep "~!@#$%^&\*()_+ {}\[]|\:\";\'<>?, /AZ" => fail
(單引號)
cat data.txt | grep '~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ' => fail
(為了解決單引號內 特殊字元'字元)
cat data.txt | grep $'\'' => 可以找到'
cat data.txt | grep $'~!@#$%^&\*()_+ {}\[]|' => 可以找到
cat data.txt | grep $'~!@#$%^&\*()_+ {}\[]|\' => 多了\, 就fail
目前用的shell是/bin/sh 不是bash
希望有遇過的版友
可以給一些建議
現在仍在嘗試解決中
若一有解答會回報給大家
感謝
-------------------------------------------------------
今天試了板友的提示
環境是
ubuntu 10.04 / busybox v1.01
Ex: ~\!@#$%^&\*()\_+ {}\[\]|\\\:\";'<>?, /AZ`
當用grep ""(雙引號), 搜尋字串包括 ! * [ ` " \ 等字元, 將無法搜尋,
sol: 這些特殊字元前面需要加上\或\\
特別的是字元 " ` 前面加上\\有問題,
字元 \ 前面需要加上兩個\\, ex: \=>\\\ (反斜線的雙重escape)
ex: cat data.txt |grep "~\!@#$%^&\*()_+ {}\[]|\\\:\";'<>?, /AZ"
若用grep ''(單引號), 搜尋字串包括 * [ ' \ 等字元, 將無法搜尋,
sol: 這些特殊字元前面需要加上\, (但不能加上兩個\)
特別的是字元 ' 前面需要加上'"'", ex: ' => '"'"'
ex: cat data.txt |grep '~!@#$%^&\*()_+ {}\[]|\\:";'"'"'<>?, /AZ'
若用grep $'\x27'繼續延伸找結果, 則是busybox不支援該語法
以上是自己測試的結果
謝謝版友幫忙
--
有個grep特殊字元的問題想請教
Q:
若想在檔案裡 搜尋特定字串如右 ~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ
假設有一個隨機檔案data.txt內容是
AA="XXX223"
BB=a132423davqef1
CC='OOOOOOOO'
DD="~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ"
EE=e12eee eqwf
發現因為特殊字元的關係 ex: * [
下面指令會出現問題
我試過
(雙引號)
cat data.txt | grep "~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ" => fail
(雙引號, 特殊字元前面加\)
cat data.txt | grep "~!@#$%^&\*()_+ {}\[]|\:\";\'<>?, /AZ" => fail
(單引號)
cat data.txt | grep '~!@#$%^&*()_+ {}[]|\:";'<>?, /AZ' => fail
(為了解決單引號內 特殊字元'字元)
cat data.txt | grep $'\'' => 可以找到'
cat data.txt | grep $'~!@#$%^&\*()_+ {}\[]|' => 可以找到
cat data.txt | grep $'~!@#$%^&\*()_+ {}\[]|\' => 多了\, 就fail
目前用的shell是/bin/sh 不是bash
希望有遇過的版友
可以給一些建議
現在仍在嘗試解決中
若一有解答會回報給大家
感謝
-------------------------------------------------------
今天試了板友的提示
環境是
ubuntu 10.04 / busybox v1.01
Ex: ~\!@#$%^&\*()\_+ {}\[\]|\\\:\";'<>?, /AZ`
當用grep ""(雙引號), 搜尋字串包括 ! * [ ` " \ 等字元, 將無法搜尋,
sol: 這些特殊字元前面需要加上\或\\
特別的是字元 " ` 前面加上\\有問題,
字元 \ 前面需要加上兩個\\, ex: \=>\\\ (反斜線的雙重escape)
ex: cat data.txt |grep "~\!@#$%^&\*()_+ {}\[]|\\\:\";'<>?, /AZ"
若用grep ''(單引號), 搜尋字串包括 * [ ' \ 等字元, 將無法搜尋,
sol: 這些特殊字元前面需要加上\, (但不能加上兩個\)
特別的是字元 ' 前面需要加上'"'", ex: ' => '"'"'
ex: cat data.txt |grep '~!@#$%^&\*()_+ {}\[]|\\:";'"'"'<>?, /AZ'
若用grep $'\x27'繼續延伸找結果, 則是busybox不支援該語法
以上是自己測試的結果
謝謝版友幫忙
--
Tags:
Linux
All Comments

By Ida
at 2014-10-19T19:06
at 2014-10-19T19:06

By Madame
at 2014-10-20T19:50
at 2014-10-20T19:50

By Hazel
at 2014-10-21T01:27
at 2014-10-21T01:27

By George
at 2014-10-23T19:57
at 2014-10-23T19:57

By Bennie
at 2014-10-28T00:15
at 2014-10-28T00:15

By Isabella
at 2014-10-31T04:42
at 2014-10-31T04:42

By Sandy
at 2014-11-03T18:51
at 2014-11-03T18:51

By Thomas
at 2014-11-04T09:19
at 2014-11-04T09:19

By Susan
at 2014-11-05T17:20
at 2014-11-05T17:20
Related Posts
在 Mint 17 安裝 Oracle Java 的方法

By Kyle
at 2014-10-15T10:08
at 2014-10-15T10:08
請問這是什麼軟體?(類似簡報播放)

By Edwina
at 2014-10-15T00:14
at 2014-10-15T00:14
mint 17 mate 1.8 chrome看ted會有亂碼

By Xanthe
at 2014-10-14T17:31
at 2014-10-14T17:31
ssh可對外 但外面卻無法ssh回來 何解

By Quintina
at 2014-10-14T17:13
at 2014-10-14T17:13
升級ubuntu後win7耳機掛點

By Rosalind
at 2014-10-14T04:11
at 2014-10-14T04:11