Sed用空格替换字符串

时间:2016-12-16 08:56:51

标签: bash replace 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 }

谢谢你们

2 个答案:

答案 0 :(得分:2)

以下似乎有效(有一些空格差异):

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

即。首先用换行符替换所有", u ",然后删除所有u,其中u前面没有单词字符。

请注意,输出不是有效的JSON。

答案 1 :(得分: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或其他方法来解决它。