У меня есть плоский файл, который содержит следующуюКак написать массиву вывод команды awk в UNIX?
INDIA USA SA NZ AUS ARG GER BRA
так есть восемь колонн в целом. Теперь я хочу сохранить индексы только тех столбцов, которые начинаются с A в массив. Для этого я попробовал следующее заявление
awk '{for(i=1;i<=NF;i++){if($i~/^A/){set -A newArray $i}}}' testUnix.txt
когда эхо-файл, используя
echo "${newArray[*]}"
это печать 5 6, но всякий раз, когда я пытаюсь получить длину этого массива
echo ${#newArray[@]}
его длина отображается только как 1. Разве это не должно быть 2? Я также попытался
awk '{y = 0;for(i=1;i<=NF;i++){if($i~/^A/){newArray[y] = $i ; y++}}}' testUnix.txt
, но и это производит один и тот же результат. Что мне не хватает? Пожалуйста, объясните. Я намерен получить требуемый выход 2.
«newArray» в awk и bash - это два разных объекта. Поэтому, когда вы набираете 'echo '$ {newArray [*]}" 'его значение массива bash, вы получаете – nu11p01n73R
. Должен сказать - я думаю, что здесь такие вещи, как Perl или Python, начинают входить сами. – Sobrique