用换行符/段落标记替换所有空格以制作单词列表

2024-01-04

我正在尝试列出我们在课堂上翻译的希腊语文本的词汇表。我想用段落标记替换每个空格或制表符,以便每个单词都出现在自己的行上。谁能给我 sed 命令,并解释我在做什么?我仍在尝试弄清楚 sed。


对于相当现代的 sed 版本,编辑标准输入以产生标准输出:

$ echo 'τέχνη βιβλίο γη κήπος' | sed -E -e 's/[[:blank:]]+/\n/g'
τέχνη
βιβλίο
γη
κήπος

如果您的词汇表单词位于名为lesson1 and lesson2, 将 sed 的标准输出重定向到文件all-vocab with

sed -E -e 's/[[:blank:]]+/\n/g' lesson1 lesson2 > all-vocab

这是什么意思:

  • The character class [[:blank:]] matches either a single space character or a single tab character.
    • Use [[:space:]]而是匹配任何单个空白字符(通常是空格、制表符、换行符、回车符、换页符和垂直制表符)。
    • The +量词的意思匹配一个或多个先前的模式.
    • So [[:blank:]]+是一个或多个字符的序列,全部为空格或制表符。
  • The \n替换中是您想要的换行符。
  • The /g末尾的修饰符意味着尽可能多次地执行替换,而不仅仅是一次。
  • The -E选项告诉 sed 使用 POSIX 扩展正则表达式语法,特别是对于这种情况+量词。没有-E,你的 sed 命令变成sed -e 's/[[:blank:]]\+/\n/g'。 (注意使用\+而不是简单的+.)

Perl 兼容的正则表达式

对于熟悉 Perl 兼容正则表达式和支持 PCRE 的 sed 的人,请使用\s+匹配至少一个空白字符的运行,如

sed -E -e 's/\s+/\n/g' old > new

or

sed -e 's/\s\+/\n/g' old > new

这些命令从文件中读取输入old并将结果写入名为的文件new在当前目录中。

最大的便携性,最大的粗糙度

回到几乎所有版本的 sed版本 7 Unix https://en.wikipedia.org/wiki/Version_7_Unix,命令调用有点巴洛克风格。

$ echo 'τέχνη βιβλίο γη κήπος' | sed -e 's/[ \t][ \t]*/\
/g'
τέχνη
βιβλίο
γη
κήπος

Notes:

  • 在这里我们甚至不假设谦卑者的存在+量词并用单个空格或制表符模拟它([ \t])后跟零个或多个([ \t]*).
  • Similarly, assuming sed does not understand \n for newline, we have to include it on the command line verbatim.
    • The \ and the end of the first line of the command is a continuation marker that escapes the immediately following newline, and the remainder of the command is on the next line.
      • Note:转义换行符前面不能有空格。也就是说,第一行的结尾必须是exactly反斜杠后跟行尾。
    • 这个容易出错的过程可以帮助人们理解为什么世界转移到可见字符,并且您在尝试使用复制和粘贴命令时需要小心一些。

关于反斜杠和引号的注意事项

上面的命令都使用单引号 ('') 而不是双引号 ("")。考虑:

$ echo '\\\\' "\\\\"
\\\\ \\

也就是说,与双引号字符串相比,shell 对单引号字符串应用不同的转义规则。您通常希望保护正则表达式中常见的所有反斜杠single quotes.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用换行符/段落标记替换所有空格以制作单词列表 的相关文章

随机推荐

  • 如何使用apache poi 3.6获取A1(单元格地址)的单元格值

    我有 Excel 单元格地址 如 A1 A2 那么 如何使用 poi 3 6 以编程方式访问此单元格 另一种方法是 row mySheet getRow cell row getCell 但我的地址格式为 A1 那么 我如何以编程方式访问这
  • 如何使用模板函数从缓冲区(T* 数据数组)创建 cv::Mat?

    我想编写一个模板函数来复制指针引用的数据T image to cv Mat 我很困惑如何概括 T 和 cv type 匹配 template
  • 将 Android studio 更新到 2.2 后出现“无法解决 x”错误

    Google 推出了 Android Studio 2 2 所以我将 Android studio 2 1 更新为 Android Studio 2 2 当我制作项目时 我收到这些错误 和更多 Error Failed to resolve
  • 添加apache用户组文件上传权限

    我有一个 php 脚本将文件上传到某个文件夹 目前它们作为 psacln 组上传 以便我可以通过 FTP 删除文件 当 PHP 作为 FastCGI 运行时 这一切都工作正常 我必须将 PHP 更改为作为 Apache 模块运行 以便让 p
  • 为什么Ul上方有空白

    当我放置无序列表时 then why top bar goes down I cannot find the reason behind this Please tell me how to fix this problem http js
  • Joomla MySQL 性能

    我一直在开发一个版本为2 5 11的Joomla网站 网站的流量将会非常高 我的问题是关于 MySQL 查询性能的 数据库包含大约 60000 行内容表 下面看到的查询 核心 com content 文章模型查询 执行时间约为 6 秒 非常
  • 如何显示尾随“%”符号?

    在 SO Line 的折扣百分比列中 我想在其中显示尾随 我尝试将显示格式设置为 P 但这是一场灾难 由于实际值是数据库中的百分比 因此不必乘以 100 感谢您的回答 您应该设置DisplayFormat to 0 00 结果你会得到以下结
  • Py2Exe 检测为病毒。备择方案?

    所以 我创建了一个python程序 使用 Py2Exe 转换为 exe 并尝试使用 PyInstaller 和 cx freeze 所有这些都会触发程序在virustotal 和我的本地计算机上被avast avg 和其他程序检测为病毒 我
  • Cython:编译独立的静态可执行文件

    我正在尝试编译一个不使用动态加载器的可执行文件 ELF 文件 我用了Cython将Python编译为C cython3 3 test py embed Then gcc test c otest pkg config libs cflags
  • 如何将 Material UI 集成到 Svelte 项目中

    我想整合材质用户界面 https sveltematerialui com 进入我的 Svelte 项目 我尝试遵循官方文档here https github com hperrin svelte material ui 但我不知道为什么在
  • 有没有类似于 Java 的 mini-mvc-profiler 的东西?

    正如标题所说 有没有类似的东西迷你 MVC 分析器 http code google com p mvc mini profiler 对于Java 我正在寻找可以用于Struts http struts apache org or 春季MV
  • 我们可以指定散景导出的 png 文件大小/分辨率吗?

    使用 Python Bokeh export png 函数 我们可以将对象导出到 png 文件 但是 我找不到任何方法来指定生成的 png 文件大小 分辨率 我发现我使用相同的代码在Windows和Linux中得到了不同的png文件 在 W
  • Postgresql 捷克语全文搜索(无默认语言配置)

    我正在尝试设置捷克语全文搜索 我有点困惑 因为我看到了一些cs cz affix and cs cz dict里面的文件tsearch data文件夹 但没有捷克语配置 它可能不随 Postgres 一起提供 那么我应该创建一个吗 我必须创
  • 使用 Gradle 将依赖项添加到运行时映像

    我不知道如何添加依赖项 我的模块需要 Log4j 我向模块信息添加了要求 我还添加了 gradle 依赖项 我可以运行项目 但无法创建自定义运行时映像 plugins id java id application id org openjf
  • 返回数组中重复元素的最佳方法

    这是我用来返回重复元素的方法 但是 当我的数组有大量长文本项目时 我面临着最危险的性能问题 例如浏览器关闭等 var arr 9 9 111 2 3 4 4 5 7 var sorted arr arr sort var results f
  • vscode Typescript Intellisense 仅显示第一个选项?

    我正在开发我的 React Native TypeScript 应用程序 今天突然 没有更新 没有更改设置 我的智能感知开始只显示第一个建议 无论如何 这个问题不是特定于特定类的 我已经多次重新启动Vscode 重新启动TS语言服务器 删除
  • 参数中包含空格的 Python 子进程调用在 Windows 上不起作用

    我正在运行一个 java 命令 该命令获取类路径和其他有空格的文件位置 Windows 似乎不喜欢它 我从 C Program Files Splunk 运行程序 其中有一个空格 这是我的命令 c1 os path join appdir
  • 如何获取TFS集合中所有项目的名称?

    关于如何从TFS获取集合参考here https stackoverflow com questions 16100991 how to get all collections from tfs 16100992 16100992 请参考h
  • Kube-proxy 或 ELB“延迟”HTTP 请求数据包[关闭]

    Closed 这个问题是与编程或软件开发无关 help closed questions 目前不接受答案 我们正在 AWS 中的 Kubernetes 1 9 3 上运行 Web API 应用程序 使用 KOPS 设置 该应用程序是一个部署
  • 用换行符/段落标记替换所有空格以制作单词列表

    我正在尝试列出我们在课堂上翻译的希腊语文本的词汇表 我想用段落标记替换每个空格或制表符 以便每个单词都出现在自己的行上 谁能给我 sed 命令 并解释我在做什么 我仍在尝试弄清楚 sed 对于相当现代的 sed 版本 编辑标准输入以产生标准