gpt4 book ai didi

regex - sed:在 [6 位数字] 和空格之后换行

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

我正在尝试用我尝试过的换行符替换 [6 位] 之后的空格

sed 's/a\d{6}\s\+/\n/' old > new

例如:

a123456 this is a sentence

会变成:

a123456
this is a sentence

我也愿意接受 linux 中允许我执行此操作的任何其他程序,例如 awk、perl 或 bash。

最佳答案

首先,我建议在此处使用带有 sed -r 的 POSIX 扩展正则表达式来简化模式。


POSIX 正则表达式甚至 POSIX 扩展正则表达式(使用 -r)不支持 \d\s 作为字符类例如 Perl。我会使用以下模式:

sed -r 's/(a[0-9]{6}) +/\1\n/' old > new

请注意,我将空格之前的所有内容捕获到一个捕获组中,并在替换模式中使用此组 \1

然而,在 POSIX 正则表达式中确实有可用的命名字符类,但它们的输入时间比在 Perl 中长。如果你想使用命名字符类,你可以使用:

sed -r 's/(a[[:digit:]]{6})[[:space:]]+/\1\n/' old > new

在这种情况下。如果您想了解更多有关 POSIX 正则表达式中可用字符类的信息,请查看 grep 和/或 egrep 的联机帮助页。

关于regex - sed:在 [6 位数字] 和空格之后换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29302624/

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