从文本文件中删除所有点和短划线。不删除句点

时间:2015-10-22 00:07:20

标签: unix sed

我有一个包含摩尔斯电码的文本文件。我必须删除所有莫尔斯代码,但不能删除每个句子末尾的句号或“Edgar-Johns”中的连字符。文本文件如下:

A test to see if the morse code can be removed from a file. .--- -. ..
This is a test --. -.- .-- .. -.. --- .- .. of sorts and so on. Let's see if the
code snippets can be found.
Also can they be .- . -.- removed and yet leave the periods at the end of sentences alone. ---- -. There are also hyphenated words like the
following: Edgar-Johns. -.

我可以使用sed 's/[.-]//g'取出所有的点和短划线,但这也会消除句点和连字符。

2 个答案:

答案 0 :(得分:1)

在匹配的点(或破折号)之前只需要一个空格,一次匹配一行中的所有点,破折号和空格,并用空格替换而不是空格:

sed 's/ [ .-]*/ /g'

运行示例文本,上面的命令会产生以下输出:

  

测试是否可以从文件中删除摩尔斯电码。这是一个   各种测试等。让我们看看是否可以找到代码片段。   也可以将它们删除,然后将句点留在句号的末尾   单独的句子。还有如下连字符:   埃德加-约翰。

答案 1 :(得分:-1)

我不熟悉正则表达式,因此我无法告诉您如何输入正确的表达式,但摩尔斯电码完全由点和短划线组成。"字"空间分隔,对吗?如果是这种情况,你可以使用模式"空格(任意数量的点和破折号,没有字母)空格"只删除莫尔斯码位。