我有一个文本,其中包含multi-words
和类似对话框的短语,例如-hello
,并且我只想在连词不属于多词的情况下将连字符与单词分开,这意味着连字符不是被两个字符包围。
该单词可能出现在句子中的任何地方,而不仅仅是开头。 示例:
输入:
multi-media
-hello -oh, hi
所需的输出:
multi-media
- hello - oh, hi
这可以使用sed
或awk
完成吗?
答案 0 :(得分:2)
您可以使用sed
进行以下操作:
sed -E 's/(^|[^[:alnum:]])-/& /g' yourInputFile
正则表达式(^|[^[:alnum:]])-
会在行首(-
)或不属于单词(^
= 不是字母或数字,例如空格或逗号。
替换字符串[^[:alnum:]]
告诉&␣
在我们匹配的内容(sed
)之后添加一个空格。
答案 1 :(得分:0)
易于使用Vim:
:%s/\(^\|\s\)-/\0 /g