2013-06-28 67 views
12

我有一個平面文件,其中有多個出現的包含單引號的字符串,例如hari'sleader's如何用sed中的空格替換單引號?

我想替換空間的單引號的所有事件,即

  • hari'shari s
  • leader's所有出現的所有出現到leader s

我試圖

sed -e 's/"'"/ /g' myfile.txt 

sed -e 's/"'"/" "/g' myfile.txt 

但他們沒有給我預期的結果。

回答

32

儘量保持sed命令簡單,儘可能否則你將會在你稍後閱讀後對你寫的內容感到困惑。

#!/bin/bash 
sed "s/'/ /g" myfile.txt 
+1

另外...'tr \'' twalberg

9

剛去離開單引號,把一個轉義的單引號:

sed 's/'\''/ /g' input 

也可以用一個變量:

quote=\' 
sed "s/$quote/ /g" input 
+0

正是我在找的東西,謝謝。 –

16

這會做你想要什麼

echo "hari's"| sed 's/\x27/ /g' 

它將取代在你的文件/文目前隨時隨地單引號。即使它們用於引用,它們也會被空格替換。在這種情況下(除去在字邊界字不在引號),你可以使用以下內容:

echo "hari's"| sed -re 's/(\<.+)\x27(.+\>)/\1 \2/g' 

HTH

0

這是根據我自己的經驗。

請注意我如何使用特殊字符' VS "sed

這之後不會做(沒有輸出)

2521 #> echo 1'2'3'4'5 | sed 's/'/ /g' 
> 
> 
> 

但這會做

2520 #> echo 1'2'3'4'5 | sed "s/'/ /g" 
12345 
+0

我想有點解釋會很好。另外:這是真的是Solaris還是別的什麼? (還有什麼?) – Holger

0

的 - 我應該將其替換爲 sed -i's /「/」/ g'filename.txt

如果你想備份你可以做 sed -i.bak's /「/」/ g'filename.txt

相關問題