Скрипт для добавления нескольких текстовых файлов в один файл - PullRequest
0 голосов
/ 09 мая 2019

Я новичок в Unix, мне нужно написать скрипт.Может ли кто-нибудь помочь мне с требованием, где у меня есть список файлов в каталоге, я хочу объединить файлы, если шаблон имен строк в именах файлов?

AAAL_555A_ORANGE1_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555A_ORANGE2_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555A_ORANGE3_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555A_ORANGE4_F190404_D190408.TXT.freshfruits_20190422-115617     
AAAL_555B_ORANGE5_F190404_D190408.TXT.freshfruits_20190422-115617       
AAAL_555B_Orange6_F190404_D190408.TXT.freshfruits_20180422-115617 

Если вторая часть имени файла = '555A', а третья часть состоит из ORANGE, тогда все файлы содержимого Oranges / 555A будут объединены в один файл с именем файла AAL_555a_Orange_date + "% Y% m% d".текст.

Если вторая часть имени файла = '555B' и третья часть состоит из ORANGE / 555B, то все файлы содержимого Oranges будут объединены в один файл с именем файла AAL_555b_Orange_date + "% Y% m% d" .txt.

Если вторая часть имени файла = '555A' и третья часть состоит из MANGO, тогда все файлы содержимого Mango будут объединены в один файл с именем файла AAL_555a_Mango_date + "% Y% m% d" .txt.

Пожалуйста, помогите ..!

Я знаю приведенную ниже команду для добавления нескольких файлов в один.Но здесь я хочу сделать на основе шаблонов, присутствующих в имени файла.

cat File1 file2 file3 >> final.txt

Как-то так

for i in *.TXT; do    
   while field separator='_' read -r str1 num str2 ; do    
     if [ "$str1" = "RTG" ]; then    

     fi         
   done     
done  

1 Ответ

1 голос
/ 09 мая 2019

Использование Подстановки переменных Bash .

Скрипт зацикливает все начальные файлы AAAL, сохраняет их имена в переменной $in и использует подстановки переменных для обработки имен до тех пор, пока не останутся только вторая и третья части (например, AAAL_555A_ORANGE1_F190404.TXT -> 555A_ORANGE).

См. Комментарии в сценарии для пошагового примера и связанную документацию для объяснения замены:

$ for in in AAAL*
  do                              # for example       AAAL_555A_ORANGE1_F190404.TXT
      out=${in#*_}                # remove AAAL_        -> 555A_ORANGE1_F190404.TXT
      out=${out%_*}               # remove _F190404.TXT -> 555A_ORANGE1
      out=${out%[0-9]}            # remove 1            -> 555A_ORANGE
      cat $in >> AAAI_$out.txt
  done
$ ls -1 AAAI*
AAAI_555A_MANGO.txt
AAAI_555A_ORANGE.txt
AAAI_555B_APPLE.txt
AAAI_555B_Orange.txt
AAAI_555B_ORANGE.txt
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...