gpt4 book ai didi

regex - 使用 sed 或 awk 从字符串中删除前导和尾随数字,同时保留 2 个数字

转载 作者:行者123 更新时间:2023-12-04 11:51:36 24 4
gpt4 key购买 nike

我有一个包含以下行的文件:

353451word2423157
anotherword
7412yetanother1
3262andherese123anotherline4359013
5342512354325324523andherese123anotherline45913
532453andherese123anotherline413
我想去掉大部分前导和尾随数字(0-9),同时仍然保留 2 个前导和尾随数字,如果有的话......
澄清一下,对于上面的列表,预期的输出是:
51word24
anotherword
12yetanother1
62andherese123anotherline43
23andherese123anotherline45
53andherese123anotherline41
首选工具是 sed 或 awk,但欢迎任何其他建议...
我试过类似 sed 's/[0-9]\+$//' | sed 's/^[0-9]\+//' ,但显然这会去除所有前导和尾随数字......

最佳答案

你可以试试这个sed :

sed -E 's/^[0-9]+([0-9]{2})|([0-9]{2})[0-9]+$/\1\2/g' file

51word24
anotherword
12yetanother1
62andherese123anotherline43
23andherese123anotherline45
53andherese123anotherline41
命令详细信息:
  • ^[0-9]+([0-9]{2}) : 匹配开头的 1+ 个数字,如果后面是 2 个数字(在一个组中捕获)并替换为组 #1 中的 2 个数字。
  • ([0-9]{2})[0-9]+$ : 如果前面有 2 个数字(在一组中捕获),则匹配末尾的 1+ 个数字,并替换为组 #2 中的 2 个数字。
  • 关于regex - 使用 sed 或 awk 从字符串中删除前导和尾随数字,同时保留 2 个数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68181042/

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