首页 > 解决方案 > 使用 sed 命令在 UNIX 上处理正则表达式/扩展正则表达式

问题描述

我开始了一个 C 和 UNIX OS 类,但在处理正则表达式时遇到了一些麻烦,特别是使用 sed 命令。目前我正在处理和解析文本的assignmet。作业中的一项任务是获取一个 txt 文件,在使用 sed 时,我需要在以下条件下将整个文本解析为一个新文件:

  1. 新文件中的每一行不应超过 30 个字符(包括空格),中间不切字。所以基本上这意味着如果我们要从下一行添加第一个单词,它将超过 30 个字符。
  2. 新文件中唯一的空格应该是空格(“”)或换行符(“\n”)。
  3. 新文件中的所有行不应以制表符/空格开头或结尾或包含双空格。
  4. 我只能对 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'

目前我得到两个输出之一。我在删除标点符号时遇到问题,或者新行太多(取决于我尝试对正则表达式所做的更改)。

将不胜感激任何帮助或智慧!

标签: regexunixsedtext-parsing

解决方案


推荐阅读