Замена неидентичных чисел в пакетах файлов с помощью sed - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь заменить комбинацию букв и цифр в нескольких файлах с помощью команды sed, но пока не могу найти правильный путь.Все строки в одном файле имеют одинаковый номер, следующий за буквой M, но этот номер варьируется в зависимости от файла.Например, в файле M800.txt я пытаюсь заменить это:

M800_Arch_nautilus_Posei XXXCV  
M800_Arch_exocet_Pleiade DZEFE

на это:

Arch_nautilus_Posei XXXCV  
Arch_exocet_Pleiade DZEFE

И в файле M56.txt:

M56_Arch_nautilus_Posei FGYYE  
M56_Arch_exocet_Pleiade UJEYY

by:

Arch_nautilus_Posei FGYYE  
Arch_exocet_Pleiade UJEYY

Я в основном пытаюсь удалить M*_ в каждом файле в каталоге, содержащем 800 файлов с такими символами в каждой строке каждого файла.

IЯ действительно новичок в этом и до сих пор пытался это безуспешно:

sed -i 's/\M._$*//g' *.txt

Может быть, кто-то может указать здесь ошибку?

Ответы [ 2 ]

0 голосов
/ 05 декабря 2018

Если предположить, что ввод был >M800_Arch_nautilus_Posei XXXCV и так, то:

sed -i 's/[[:alnum:]]*_//' *.txt

... заменит эту строку на:

>Arch_nautilus_Posei XXXCV

..и так далее.

0 голосов
/ 05 декабря 2018

Все строки в одном файле имеют одинаковые номера, следующие за буквой М, но число варьируется в зависимости от файлов.

Затем все, что вам нужно сделать, это удалить все до первого подчеркиванияплюс само подчеркивание.

sed -i 's/^[^_]*_//' *.txt
  • ^ соответствует началу строки,
  • [^_]* соответствует нулю или более символов, не являющихся подчеркиванием,
  • _ соответствует подчеркиванию.
...