Без обращения к остальной части скрипта, чтобы пропустить файлы, оканчивающиеся на «.xls»:
[[ $f =~.xls$ ]] && continue
Или, если вам не нравится такой синтаксис:
case "$f" in
(*.xls) continue;;
esac
Или, если вам не нравится этот синтаксис:
shopt -s extglob
for f in /mnt/dir1/dir2/$CITY/!(*.xls)
do
: etc
done
Пробовал с помощью приведенной ниже команды, все работает нормально
команда
awk -F ":" '{print $3,$NF}' p.txt| sed 's/"\}*//g'| sed "s/,NAME/|/g"| sed -r "s/\s+//g"| sed '1i table|NAME'
выход
table|NAME
ABC|A
ABC|A
ABC|B
ABC|A
ABC|B
$ { echo 'table|NAME'; jq -r '"\(.table.string)|\(.NAME.string)"' file; }
table|NAME
ABC|A
ABC|A
ABC|B
ABC|A
ABC|B
Это использует jq
для анализа данных из каждого объекта JSON, создавая строку для каждой строки вывода, которая содержит имя таблицы и строку NAME
, найденную в объекте.
Заголовок создается с помощью простого echo
.
Другой ответ jq:
{ echo 'table|NAME'; <file jq -r 'map(.string)|join("|")'; }
, который использует преимущества функции map
для объединения объектов table
и NAME
и join
для объединения обеих строк строк объектов.
Основываясь на последнем обновлении вопроса OP, вам понадобится эта команда (требуется версия jq> = 1.5):
<file jq -r 'keys_unsorted,map(.string)|join("|")'