Linux 使用shell命令替换开始和结束的随机字符串

Linux 使用shell命令替换开始和结束的随机字符串,linux,unix,awk,sed,Linux,Unix,Awk,Sed,感谢您提供的帮助,以找出以下场景的解决方案 输入: :50Kfoobar:53B:53B:53Bbaz:53B:53B;:50Kvoocar:53B:53B:53Bbaz:53B:53B 输出: :50KCREDIT:53B:53B:53Bbaz:53B:53B;:50KCREDIT:53B:53B:53Bbaz:53B:53B 尝试使用下面的命令 sed 's/:50K.*:53B/:50KCREDIT:53B/g' <<<':50Kfoobar:53B:53B:53Bb

感谢您提供的帮助,以找出以下场景的解决方案

输入:

:50Kfoobar:53B:53B:53Bbaz:53B:53B;:50Kvoocar:53B:53B:53Bbaz:53B:53B
输出:

:50KCREDIT:53B:53B:53Bbaz:53B:53B;:50KCREDIT:53B:53B:53Bbaz:53B:53B
尝试使用下面的命令

sed 's/:50K.*:53B/:50KCREDIT:53B/g' <<<':50Kfoobar:53B:53B:53Bbaz:53B:53B;:50Kvoocar:53B:53B:53Bbaz:53B:53B'

producing below result
:50KCREDIT:53B


sed's/:50K.*:53B/:50KCREDIT:53B/g'对于所显示的示例,请尝试以下内容

awk '{gsub(/:50K[^:]*:53B/,":50KCREDIT:53B")} 1' Input_file

解释:使用regex
:50K[^::::*:53B
匹配:50K,直到下一次出现
(非贪婪匹配),然后匹配:后跟53B,然后全局用:50KCREDIT:53B替换此匹配部分,最后打印当前行。

对于显示的示例,请尝试以下操作

awk '{gsub(/:50K[^:]*:53B/,":50KCREDIT:53B")} 1' Input_file

解释:使用regex
:50K[^:::*:53B
匹配:50K,直到下一次出现
(非贪婪匹配),然后匹配:后跟53B,然后全局用:50KCREDIT:53B替换此匹配部分,最后打印当前行。

使用:
sed's/:50K[^:]*:53B/:50KCREDIT:53B/“
解释@anubhava的建议:你的
*
是贪婪的,将匹配到最后538年的所有内容。
[^:::*:
使匹配在每个冒号处停止。感谢Anubhava和tink为您提供的时间和帮助。仅供参考!!附加的副本可以作为参考,但看起来不像一个精确的副本。使用:
sed的/:50K[^::*:53B/:50KCREDIT:53B/”
解释@anubhava的建议:你的
*
是贪婪的,并且将匹配到最后538个副本。
[^:::*:
使匹配在每个冒号处停止。感谢Anubhava和tink为您提供的时间和帮助。仅供参考!!附加的副本可以作为参考,但看起来不像一个确切的副本。感谢Ravinder为您提供的时间和帮助。感谢Ravinder为您提供的时间和帮助。