Wey*_*van 2 sed text-processing
我有一个包含总共 482 行的文件,我想从中删除 ~~adt*~~。这是内容的样子:
478|~~adt00000aa9~~~~adt0000000b~~14395189_p0.jpg
479|~~adt00000995~~44836628_p0.jpg
480|~~adt00000aae~~Miku_Collab_2_by_Luciaraio.jpg
Run Code Online (Sandbox Code Playgroud)
我试过了,sed 's/~~adt*~//' file > new_file但它没有删除所有内容。
如何删除第一个和最后两个 ~~ 符号之间的所有内容?
鉴于您要删除~~adt(something)~~并且可能有~~(something different)~~其他行(问题中未显示):
$ sed 's/~~adt[^~]*~~//g' file.in >file.out
Run Code Online (Sandbox Code Playgroud)
对于给定的数据,这将生成
478|14395189_p0.jpg
479|44836628_p0.jpg
480|Miku_Collab_2_by_Luciaraio.jpg
Run Code Online (Sandbox Code Playgroud)
将adt最后一行的更改为xxx,命令生成
478|14395189_p0.jpg
479|44836628_p0.jpg
480|~~xxx00000aae~~Miku_Collab_2_by_Luciaraio.jpg
Run Code Online (Sandbox Code Playgroud)
该模式~~adt[^~]*~~将匹配所有出现的 ,~~adt后跟任意数量的不是 的字符,~然后~~再次匹配。将/g在年底将确保在每一行所有这些比赛都被删除。