找到一个模式,并在它前面添加一个新行来替换该模式。

想用新行代替图案并保留图案–。

样品输入

:16R:ABC:20C::CORP:30E::ABC

想把”:[0-9][0-9]”的模式替换为新的一行,并加上”:[0-9][0-9]”的模式。

Output
:16R:ABC
:20C::CORP
:30E::ABC

目前想出了–

echo ":16R:ABC:20C::CORP:30E::ABC" | sed 's/[:][0-9][0-9]/\
:/g;/^$/!P;D'

:R:ABC
:C::CORP
:E::ABC

预期输出。

:16R:ABC
:20C::CORP
:30E::ABC

它没有保留模式,有什么建议吗?

解决方案:

使用一个直接的 sed 解决方案,POSIX-ly

sed 's/[A-Z]\([:][0-9][0-9][A-Z]\)/\n\1/g'

如果你能用 awk 并有GNU变体可用,你可以调用 patsplit() 劈头盖脸 :[0-9][0-9][A-Z] 并从第2次起开始替换。

awk '{ n = patsplit($0, arr, /[:][0-9][0-9][A-Z]/)
       for (iter = 2; iter <= n; iter++) 
           sub(arr[iter], ORS arr[iter]); 
     }1'

或使用任何POSIX awk

awk '{ n = split($0, arr, /[:]/)
       for (iter = 3; iter <= n; iter++) 
           if ( match(arr[iter], /[0-9][0-9][a-zA-Z]/) ) 
               sub(":"arr[iter], ORS ":" arr[iter]);  
     }1'

给TA打赏
共{{data.count}}人
人已打赏
未分类

在编辑按钮上点击显示输入文本字段中的行数据,并在React js中更新同一行的新值。

2022-9-8 19:04:37

未分类

在python的for循环中使用list index的意义是什么?

2022-9-8 19:04:39

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索