gpt4 book ai didi

regex - 如何在 Bash shell 中使用 GNU sed 只获取带有单引号的行?

转载 作者:太空宇宙 更新时间:2023-11-04 09:30:19 24 4
gpt4 key购买 nike

我正在编写一个脚本来解析一个文本文件(多行)。我只需要打印符合以下模式的行:

  1. 该行的第一个字符是大写字母
  2. 该行的第二个字符是小写字母或单引号
  3. 行的第三个字符是小写字母或空格

“有效”行的例子

  • Abcd
  • A'cd
  • 抗体

尝试在 Linux 上使用 GNU sed 4.2.2

I ] 第一次尝试(转义)

$ html2text foo.html | sed -r "/^([A-Z][a-z\'])/!d"

产生以下错误信息:

html2text foo.html | sed -r "/^([A-Z][a-z\'])/date"

sed: -e expression n°1, character 19: extra characters after command

II ] 第二次尝试(没有转义)

$ html2text foo.html | sed -r "/^([A-Z][a-z'])/!d"

产生以下错误信息:

html2text foo.html | sed -r "/^([A-Z][a-z'])/date"

sed: -e expression n°1, character 18: extra characters after command

我不太确定如何处理范围内的单引号“'”。我知道根本不支持在单引号 sed 表达式中转义单引号,但这里两个 sed 表达式都是双引号。

奇怪的是,错误消息都返回“.../date”(错误消息的第一行),这似乎是错误或解析问题(“/!d”标志被误解)...

注意:html2text 将'foo.html' 转换为文本文件。 sed -r 选项代表扩展正则表达式。 "[A-Z]"匹配一个字符范围(方括号在这里不是文字)

谢谢你的帮助

最佳答案

正如 casimir-et-hippolyte 所指出的在这里使用 grep 更简单:

grep "^[A-Z][a-z'][a-z ]"

或使用 sed:

sed -n "/^[A-Z][a-z'][a-z ]/p"

关于regex - 如何在 Bash shell 中使用 GNU sed 只获取带有单引号的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32254975/

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