当名称和值中包含“=”符号时,将 属性 的名称与其值分开

Separate the name of a property from its value when the name and value have '=' signs in them

我正在努力解决我试图用 sed 或任何其他 *nix 命令行解决的问题。

我试图将 属性 的名称与其在 属性 文件中的值分开。

问题是某些 属性 名称和 属性 值中有“=”符号。

(Y\ \=\ Generate\ Notification\ Letter)=(Y \= Generate Notification Letter)
(Y\ \=\ Generate\ Restriction)=(Y \= Generate Restriction)
(Y\ \=\ Sort\ by\ Group\ ID)=(Y \= Sort by Group ID)

我不能像往常一样使用带有“=”分隔符的剪切。

如何创建一个正则表达式来分隔非转义“=”符号之前的所有内容和非转义“=”符号之后的所有内容?

除了sed还有其他方法吗?

这会将未转义的 = 替换为制表符。

sed 's/\([^\]\|^\)=/\t/g' file

你也可以试试这个。我假设您的输入文件中的每一行都有一个未转义的 = 字符。

$ sed 's/\(.*[^\]\|^\)=\(.*\)/Name: \t Value: /g' file
Name: (Y\ \=\ Generate\ Notification\ Letter)    Value: (Y \= Generate Notification Letter)
Name: (Y\ \=\ Generate\ Restriction)     Value: (Y \= Generate Restriction)
Name: (Y\ \=\ Sort\ by\ Group\ ID)   Value: (Y \= Sort by Group ID)