2013-03-08 79 views
2

我有一個命令similiar這這一個:使用sed轉義單引號和雙引號。 geed,查找,xargs的

find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\'"]/testing 

我想將這個命令的工作。不幸的是,單引號和雙引號打破了命令。我怎樣才能逃避這個字符串,並使這個命令工作?

此問題與此one相同,因爲我在[。但是如果一個小改動解決了這個問題,我想知道。

我曾嘗試過幾種不同的方式,使用@,#,\,但沒有成功。

回答

6

起飛看這個:

kent$ cat file 
'''''' 
"""""" 

kent$ sed 's/\x27/single /g;s/\x22/double /g' file 
single single single single single single 
double double double double double double 

所以,改變你的cmd進入:

find ./ -type f | xargs gsed -i -r 's/[$][A-Za-z_\x22\x27]/testing' 

我沒有檢查,如果查找/ xargs的一部分OK,只是單/雙引號部分。

1

您不能在單引號中使用單引號。您可以:

  1. 結束的單引號,然後用一個反斜槓報價:'...'\'

  2. 結束的單引號,然後在雙引號中使用單引號:'...'"'"

0

或者你可以嘗試把sed腳本在雙引號和轉義需要轉義

gsed -i -r "s/[$][A-Za-z_'\"]/testing/" 
什麼