2016-12-16 213 views
0

我有一個具有如下格式的字符串:SED替換字符串空格

{u city : u Zurich , u name : u Hauptbahnhof , u address : u Test address, C106, Bahnhofsstrasse } 

我需要刪除所有的" u "(含空格),並用線替換", u "(含空格)破壞者,但我不知道我該怎麼做。

sed可以嗎?

輸出應該像

{city :Zurich 
name :Hauptbahnhof 
address :Test address, C106, Bahnhofsstrasse } 

謝謝你們

+0

你從哪裏獲得上述字符串?對我來說,這似乎是嘗試從Python創建JSON,如果是的話,請修正你的Python代碼。 – andlrc

+0

它來自json輸出已被更改,但我不得不像這樣使用它不幸的是 – Damon

回答

2

以下似乎工作(與一些空白的差異):

's/, u /\n/g;s/\bu //g' 

即首先更換所有", u "用換行,然後刪除全部u,其中u前面沒有單詞字符。

請注意,輸出不是有效的JSON。

+0

這真的很脆弱,因爲任何以'u'結尾的單詞都會被刪除。 – andlrc

+0

@andlrc:固定的。 – choroba

+0

我得到的錯誤「未終止的's命令」 我使用sed -e,我在管道後使用它,可能會有所幫助.. – Damon

1

使用perl命令行替換如下,使用\b標籤匹配確切的單詞,而不是弄亂其他字符串。

perl -pe 's/\bu \b//g;' -pe 's/\b , \b/\n/g;' file 
{city : Zurich 
name : Hauptbahnhof 
address : Test address, C106, Bahnhofsstrasse } 

,但其它人指出,如果它是一個破碎的JSON使用jq或其他方式來解決這個問題。

+0

同樣的問題如上 \t 我得到的錯誤「未結束的'S'命令」 我必須使用這樣的,輸出字符串並不需要進行JSON – Damon

+0

你所關心的一個文件或字符串運行命令@Damon – Inian

+0

我用一個tmp文件作爲例子來檢查它是否工作 – Damon