Mi causa raíz era inusual, pero la mencionaré de todos modos en caso de que alguien cometa el mismo error. Estaba usando cifs
en /etc/auto.direct
en Ubuntu 16.04.4 (actualizado recientemente a partir de 16.04 ). No agregué vers=1.0
.
Compatibilidad con versiones anteriores -uno de los mayores mitos del software.
Учитывая, что вы хотите удалить ~~adt(something)~~
и что ~~(something different)~~
может быть в других строках (, не показанных в вопросе):
$ sed 's/~~adt[^~]*~~//g' file.in >file.out
Для заданных данных будет сгенерировано
478|14395189_p0.jpg
479|44836628_p0.jpg
480|Miku_Collab_2_by_Luciaraio.jpg
Изменив adt
последней строки на xxx
, команда генерирует
478|14395189_p0.jpg
479|44836628_p0.jpg
480|~~xxx00000aae~~Miku_Collab_2_by_Luciaraio.jpg
Шаблон ~~adt[^~]*~~
будет соответствовать всем вхождениям ~~adt
, за которыми следует любое количество символов, кроме ~
, а затем снова ~~
. /g
в конце гарантирует, что все такие совпадения в каждой строке будут удалены.
adt*
означает a
, за которым следует d
, за которым следует любое количество t
, включая 0.
Точка соответствует любому символу, поэтому используйте
~~adt.*~
Для соответствия ~~adt
, за которым следует любое число (, включая 0 )символов, за которым следует ~
.
Вы можете попробовать это:
sed 's/~.*~//' file > file_new
Вывод будет:
478|14395189_p0.jpg
479|44836628_p0.jpg
480|Miku_Collab_2_by_Luciaraio.jpg