Regex 使用sed命令在UNIX上处理正则表达式/扩展正则表达式

Regex 使用sed命令在UNIX上处理正则表达式/扩展正则表达式,regex,unix,sed,text-parsing,Regex,Unix,Sed,Text Parsing,我启动了一个C和UNIX操作系统类,在处理正则表达式方面遇到了一些问题,特别是在sed命令方面。 目前我正在处理和解析文本。作业中的任务之一是获取一个txt文件,在使用sed时,我需要在以下条件下将整个文本解析为一个新文件: 新文件中的每行不应超过30个字符(包括空格),切勿在中间剪切单词。所以基本上这意味着,如果我们要添加下一行的第一个单词,它将超过30个字符 新文件中唯一的空白应该是空格(“”)或新行(“\n”) 新文件中的所有行不应以制表符/空格开头或结尾,也不应包含双空格 我只能对sed

我启动了一个C和UNIX操作系统类,在处理正则表达式方面遇到了一些问题,特别是在sed命令方面。 目前我正在处理和解析文本。作业中的任务之一是获取一个txt文件,在使用sed时,我需要在以下条件下将整个文本解析为一个新文件:

  • 新文件中的每行不应超过30个字符(包括空格),切勿在中间剪切单词。所以基本上这意味着,如果我们要添加下一行的第一个单词,它将超过30个字符
  • 新文件中唯一的空白应该是空格(“”)或新行(“\n”)
  • 新文件中的所有行不应以制表符/空格开头或结尾,也不应包含双空格
  • 我只能对sed使用-r选项。(通常我只能使用:grep、sed、cat、tr、cut、paste、head、tail、uniq和sort)
  • 我真的很接近期望的输出,但它仍然有点偏离我的目标。这使我最接近我需要实现的输出:

    cat story.txt | tr -d ["\t","\n"] | sed -r 's/(.{,30}[^[:alpha:]])/\1\n/g'
    
    目前我得到了两个输出中的一个。要么我在删除标点符号方面遇到了问题,要么新行太多(取决于我在正则表达式上所做的更改)


    感谢您给予的任何帮助或智慧

    tr-s'[:space:'''谢谢@jhnc