Удаление строки с общим шаблоном из одного файла и добавление ее в другой

#csh #tcsh

Вопрос:

У меня есть ряд файлов списка, каждый из которых содержит список имен файлов. Я хотел бы просмотреть каждый из этих файлов списка, и если одно (или несколько) из его имен файлов содержат определенный общий шаблон в заданном месте в имени файла, я хотел бы удалить его из одного файла списка в другой (не имеет значения, какой файл списка в какой файл списка). Придется сделать это в tcsh. Например, допустим, у меня есть следующие 3 файла списка

файл 1:

 abcdefg.ext
nyrtsed.ext
sapoltw.ext
 

файл 2:

 rncdefg.ext
nydusap.ext
 

файл 3:

 revflon.ext
tradefg.ext
 

и я смотрю на подстроку из символов 3-6 (на основе 0)
, затем имя abcdefg.ext файла в файле 1 имеет ту же подстроку, что и имя rncdefg.ext файла в файле 2, и ту же подстроку, что и имя tradefg.ext файла в файле 3.
Я хотел бы переместить эти 3 имени файлов в один и тот же файл списка (файл 1, 2 или 3).

Поэтому, если бы я переместил их все в файл 3, я бы получил

файл 1:

 nyrtsed.ext
sapoltw.ext
 

файл 2:

 nydusap.ext
 

файл 3:

 revflon.ext
tradefg.ext
abcdefg.ext
rncdefg.ext
 

Это мое первое испытание (все еще неполное), но мне кажется, что оно слишком сложное (много вложенных циклов).

 foreach list1 ($lists)
  foreach file1 ( `cat ${list}`)
    set pat1=`basename $file1 | cut -c10-14`
    foreach list2 ($lists)
       if ($list1 != $list2) then
          foreach file2 ( `cat ${list2}`)
             set pat2=`basename $file2 | cut -c10-14`
             if ( $pat1 == $pat2 ) then
                # have to remove from list1 and add it to list2
                # how to?
             endif
          end
       endif
    end
  end
end
 

Комментарии:

1. Ну, а что ты пробовал? И зачем, если вы "Have to do it in tcsh" включили тег [bash]? Добавьте свои усилия к вашему вопросу, чтобы мы знали, где вы застряли.

2. @DavidC.Rankin Я обновил вопрос с частичным испытанием. Тег bash связан с тем, что в прошлом мне удавалось преобразовать решение в bash в tcsh. Поскольку решения в bash более распространены, имеет смысл обратиться к более широкому сообществу. Тем более, что это непростой вопрос. В связи с этим я нахожу комментарии, подобные вашим, напыщенными и не очень полезными. Если у вас нет конструктивных комментариев/подсказок к вопросу, используйте свое время лучше в других вопросах. Если только вы не публикуете такого рода комментарии для голосов.