Я новичок в кодировании bash, поэтому заранее за ваше терпение.{awk: Command не найден
Я буду обрабатывать 100 000 изображений изображений в течение следующих недель. По мере поступления изображений у них есть необработанное имя, которое необходимо изменить. Имя необходимо изменить, просмотрев информацию для этого изображения в файле csv и переименовать соответствующим образом. Префикс и суффикс имени вместе указывают, с какой именно записью он связан, и в зависимости от того, в каком столбце указан суффикс, требуются разные соглашения о имени. Что я делаю не так????
#!/usr/bin/awk -f
for file in *.NEF
do
{awk '
BEGIN {
FS=","
}
raw_name=$file
prefix="${file:0:3}"
suffix="${file:4:4}"
if ($28 ~ /$prefix/ && $24 ~ /$suffix/)
{$100="New_prefix_1" "$raw_name";}
else
{
if ($28 ~ /$prefix/ && $25 ~ /$suffix/)
{ $100="New_prefix_2" "$raw_name";}
}
else
{
if ($28 ~ /$prefix/ && $26 ~ /$suffix/)
{$100="New_prefix_3" "$raw_name";}
}
else
{
if ($28 ~ /$prefix/ && $27 ~ /$suffix/)
{$100="New_prefix_4" "$raw_name";}
}
else
{
if ($28 ~ /$prefix/ && $29 ~ /$suffix/)
{$100= $4 "_" $2 "New_prefix_5" "$raw_name";}
}
else
{
if ($28 ~ /$prefix/ && $30 ~ /$suffix/)
{$100= $4 "_" $2 "New_prefix_6" "$raw_name";}
}
else
{
if ($28 ~ /$prefix/ && $31 ~ /$suffix/)
{$100= $4 "_" $2 "New_prefix_7" "$raw_name";}
}
else
{
if ($28 ~ /$prefix/ && $32 ~ /$suffix/)
{$100= $4 "_" $2 "New_prefix_8" "$raw_name":}
}
else
{
if ($28 ~ /$prefix/ && $33 ~ /$suffix/)
{$100= $4 "_" $2 "New_prefix_9" "$raw_name";}
}
else
{
if ($28 ~ /$prefix/ && $34 ~ /$suffix/)
{$100= $4 "_" $2 "New_prefix_10" "$raw_name";}
}
else
{mv $file ~/Rename_error/$file.NEF}
}
END }' Data.csv
Ошибка говорит о проблеме довольно ясно '{awk' - это не команда, о которой знает оболочка. При этом есть и другие проблемы. '$ file' в awk-скрипте не делает то, что вы думаете. Оболочка не расширяет переменные в одинарных кавычках. У вас нет путаницы в раковине/awk относительно того, что вы можете делать где. У вас есть строки, такие как 'prefix = '$ {file: 0: 3}" (который является оболочкой) в самом скрипте awk и т. Д. –
Удалите 'END}' и удалите '' '' перед 'awk'' , Кроме того, посмотрите синтаксис awk, я предлагаю 'man awk'. Кроме того, ваш хешбанг не должен быть awk, я верю, но bash или что-то еще. – ShellFish