gpt4 book ai didi

unix - 使用 sed 从文本文件中提取摩尔斯电码

转载 作者:行者123 更新时间:2023-12-01 06:18:22 25 4
gpt4 key购买 nike

我有一项任务是使用“sed”从包含以下内容的文本文件中提取摩尔斯电码(破折号和句点)

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-Jones. -.

现在我可以使用 sed 删除所有字符 [a-z] 和 [A-Z],但问题是句子末尾的句点以及 Edgar-Jones 中的连字符会被删除。我也找不到把它们去掉的方法...

任何帮助将不胜感激,谢谢

感谢所有的回答,每个人都有帮助。这是我去的那个

sed "s/[a-zA-Z][-.]//g;s/[a-zA-Z: ']*//g" file

它会找到字符后面的破折号或句号的实例,然后首先删除我遇到的问题。然后它会清理其余的字符、空格、冒号和撇号。

再次感谢!

最佳答案

sed 's/\(^\|[[:blank:]]\)[^[:blank:]]*[^-.[:blank:]][^[:blank:]]*/ /g' file 
               .--- -. ..
--. -.- .-- .. -.. --- .- ..
.- . -.-
---- -.
-.

那个正则表达式是:

  • 行首,或一个空格
  • 一些非空白字符
  • 后跟一个不是空格或莫尔斯字符的字符
  • 后跟一些非空白字符

这会识别其中至少包含一个非莫尔斯字符的单词,然后用一个空格替换它们。

使用 GNU grep 更简单,可惜你不能使用它:

grep -oP '(?<=^|\s)[.-]+(?=\s|$)' file

关于unix - 使用 sed 从文本文件中提取摩尔斯电码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28996892/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com