Не могли бы вы попробовать следующее.
awk -v path_val="/your_path/" '
FNR==NR{
if($0 ~ /^[0-9]+/){
a[substr($0,1,7)]=$0
}
next
}
/^Directory/{
if(count==value){
print "Directory " $0 " all elements are present." ORS "Going to write shell script code now..."
print $0 ORS val
print "*************************************************"
print "if [[ -d " path_val $0 " ]]" ORS "then" ORS\
" cd " path_val $0 ORS " mkdir " val ORS\
" if [[ $? -eq 0 ]]" ORS " then" ORS \
" echo " s1 "Directories named "\
val s1 " created successfully in path " path_val\
"." s1 ORS " else" ORS " echo " s1\
"kindly check from your end once seems directories not created." s1\
ORS " fi" ORS "else" ORS " echo " s1\
"Please check seems base directory " path_val " NOT present itself."\
s1 ORS "fi"
}
count=val=value=""
}
($3 in a){
val=(val?val OFS a[$3]:a[$3])
count++
}
/^xxx/{
value++
}' Input_file2 FS="[ _]" Input_file1
Объяснение того, что код делает:
1- Код имеет переменную с именем /your_path/
который является вашим базовым путем, где будут создаваться каталоги и т. д.
2 - Он проверит, присутствуют ли все строки, предшествующие ключевому слову Directory_...
(para by para) из Input_file1, в Input_file2, если да, то онвыведет вывод этих строк вместе с именем каталога + он также напишет код на консоли (bash-код, который проверяет ваш путь к базовому каталогу, а затем создает соответствующие каталоги внутри базового каталога).На данный момент я просто печатаю его, вы можете либо взять его в файл .ksh
(как выходной файл) и запустить его, ИЛИ вы можете добавить | bash
в конце этого кода.Я не проверял это, я оставляю это до OP.
Следующим будет вывод:
Directory Directory2_2 all elements are present.
Going to write shell script code now...
Directory2_2
19-0003-xxx-xxx-xxx_000-111 19-0004-xxx-xxx-xxx_000-111 19-0005-xxx-xxx-xxx_000-111
*************************************************
if [[ -d /your_path/Directory2_2 ]]
then
cd /your_path/Directory2_2
mkdir 19-0003-xxx-xxx-xxx_000-111 19-0004-xxx-xxx-xxx_000-111 19-0005-xxx-xxx-xxx_000-111
if [[ $? -eq 0 ]]
then
echo Directories named 19-0003-xxx-xxx-xxx_000-111 19-0004-xxx-xxx-xxx_000-111 19-0005-xxx-xxx-xxx_000-111 created successfully in path /your_path/.
else
echo kindly check from your end once seems directories not created.
fi
else
echo Please check seems base directory /your_path/ NOT present itself.
fi
PS: Как уже упоминалосьвыше, возьмите финальный код оболочки, который должен создавать каталоги в системе либо в файле output_file, либо запустить его, используя | bash
и т. д. в конце кода awk
, который я не проверял.Пожалуйста, НЕ запускайте код без тестирования.Заявления очень просты, вы можете пройти их и должны проверить их только в тестовой директории / тестовой среде.