В документе здесь -, который вы передаете в sqlplus
, либо экранируйте $
, так как\$
(непонятно, почему вы говорите, что не можете сделать это в вопросе ), либо цитируйте весь здесь -документ, используя <<'ENDSQL'
или<<\ENDSQL
(это может быть предпочтительнее, если у вас нет ничего другого в здесь -документе, который требует расширения ).
Кроме того, строка Passwo$1
должна быть заключена в одинарные кавычки в документе здесь -. Поскольку документ является сценарием оболочки, строка по-прежнему должна быть защищена от оболочки, которая ее интерпретирует. Вы делаете это, записывая это как 'Passwo$1'
.
Посмотрите, как далеко это вас заведет:
$ cut --complement -d, -f$(awk -F, '
NR > 1 {for (i=1; i<=NF; i++) CNT[i, $i]++
}
END {for (c in CNT) if (CNT[c] == (NR-1)) {split (c, T, SUBSEP)
printf "%s%d", DL, T[1]
DL = ","
}
}
' /tmp/small_data.csv) /tmp/small_data.csv
, если ваша версия cut
имеет опцию --complement
. В противном случае инвертируйте логику распечатки. Если ваш awk
проигрывает NR
в разделе END
, сохраните его в обработке по -строке -.
Он просматривает все поля во всех строках (, кроме заголовка ), и подсчитывает уникальное содержимое. В разделе END
, если CNT
равно количеству строк минус заголовок (, то есть это поле имеет одинаковое содержимое во всех строках ), разделите индекс и напечатайте номер поля.