gpt4 book ai didi

sed 将模式移动到行首

转载 作者:行者123 更新时间:2023-12-05 09:33:06 25 4
gpt4 key购买 nike

我有一个包含文本行的文本文件,我想在其中使用 sed 将模式移动到行的开头。模式是类似 [35 of 44] 的序列。

CSV files and Jupyter _ Even More Python for Beginners - Data Tools [35 of 44].description
Calling An API _ Python for Beginners [36 of 44].description

使用 \\[.*?\\] 我可以匹配该行的这部分 [11 of 31],但是我无法弄清楚如何将此模式移动到行的开头。

[35 of 44] CSV files and Jupyter _ Even More Python for Beginners - Data Tools.description
[36 of 44] Calling An API _ Python for Beginners.description

希望有人能帮助我!

最佳答案

您需要同时捕获匹配项和匹配项之前的内容才能进行替换。在 sed 中,\(...\) 捕获 ... 部分中的内容。因此:

sed -e 's/\(.*\)\(\[[^]]*\]\)/\2\1/'

在命令行中使用单引号可以避免使用双反斜杠。

如图所示,这会生成:

[35 of 44]CSV files and Jupyter _ Even More Python for Beginners - Data Tools .description
[36 of 44]Calling An API _ Python for Beginners .description

如果你想在[n of m]信息后加一个空格,添加:

sed -e 's/\(.*\)\(\[[^]]*\]\)/\2 \1/'

请注意,如果一行中有两个或更多个[n of m] 序列,则只会移动最后一个。此外,搜索不会强制方括号之间的 Material 采用 [1 of 2](number of number)的形式。这样做是可能的;目前尚不清楚是否值得为此担心。

关于sed 将模式移动到行首,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67451472/

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