gpt4 book ai didi

regex - 使用sed删除第10个字符和第10个之后的第一个句点之间的字符

转载 作者:行者123 更新时间:2023-11-29 09:35:26 26 4
gpt4 key购买 nike

我想删除每行第 10 个字符和之后的第一个句点之间的所有字符。

假设我的输入看起来像

0123456789 foo. foo....
1234566789 bar. bar...
0912309299 foobar. foobar..

输出会是这样的

0123456789. foo....
1234566789. bar...
0912309299. foobar..

是否有执行此操作的 sed 命令?

谢谢

最佳答案

这是一种实现方式:

$ sed -r 's/^([0-9]{10})[^.]*/\1/' file
0123456789. foo....
1234566789. bar...
0912309299. foobar..

或者也(通常获取前 10 个字符,无论它们是否为数字):

sed -r 's/^(.{10})[^.]*/\1/'

说明

  • -r 允许扩展正则表达式。
  • sed 's/find/replace/' 是基本替换:将 find 替换为 replace 一次。在这种情况下,我们使用以下内容:
  • ^([0-9]{10})[^.]* 捕获前 10 位数字。此外,捕获所有字符到一个点 ..
  • \1 打印回第一个 block 。

这是替换的模式:

0123456789 foo. foo....
1234566789 bar. bar...
0912309299 foobar. foobar..
^^^^^^^^^^ ^^^^^^^^^^
| ^^^^^^^ |
| | |
^([0-9]{10}) [^.]* |
| |
| |----
^^^^^^^^^^-------------
0123456789. foo....
1234566789. bar...
0912309299. foobar..

关于regex - 使用sed删除第10个字符和第10个之后的第一个句点之间的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23619541/

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