У меня есть выход uniq -c, который выводит около 7-10 строк с подсчетом каждого шаблона, который повторялся для каждого уникального шаблона линии. Я хочу сохранить вывод моего файла uniq -c file.txt в массив bash. Прямо сейчас все, что я могу сделать, это сохранить вывод в переменной и распечатать его. Однако bash в настоящее время думает, что весь вывод - это только одна большая строка.Получение вывода команды оболочки в bash array
Как bash распознает разделители? Как вы храните вывод команд оболочки UNIX в виде массивов Bash?
Вот мой текущий код:
proVar=`awk '{printf ("%s\t\n"), $1}' file.txt | grep -P 'pattern' | uniq -c`
echo $proVar
И токовый выход я получаю:
587 chr1 578 chr2 359 chr3 412 chr4 495 chr5 362 chr6 287 chr7 408 chr8 285 chr9 287 chr10 305 chr11 446 chr12 247 chr13 307 chr14 308 chr15 365 chr16 342 chr17 245 chr18 252 chr19 210 chr20 193 chr21 173 chr22 145 chrX 58 chrY
Вот что я хочу:
proVar[1] = 2051
proVar[2] = 1243
proVar[3] = 1068
...
proVar[22] = 814
proVar[X] = 72
proVar[Y] = 13
В конечном счете, я м надеясь сделать штрих-код на основе подсчетов для каждого индекса, где каждые 50 отсчетов равны одному знаку «=». Он будет, надеюсь, выглядеть следующим образом:
chr1 ===========
chr2 ===========
chr3 =======
chr4 =========
...
chrX ==
chrY =
Любая помощь, ребята?
Возможно, вам действительно нужны массивы bash, но я делаю свои гистограммы в конце конвейера с awk, то есть 'awk '/ pattern/{printf ("% s \ t \ n "), $ 1}' file .txt | сортировать | uniq -c | awk '{fn_mkThatHistogram ($ 0)}' ', но YRMV. Удачи! – shellter
Использование 'grep -P' в сочетании с' awk' довольно странно. Учитывая, что 'perl' является более вездесущим, чем' grep', который поддерживает '-P', почему бы просто не использовать' perl' для первых двух частей трубы? –
Чтобы ответить на ваш вопрос, это потому, что я не знал, что Perl является командой unix (ха-ха), и я не знаю много о Perl в целом. Меня обучали в основном в C и UNIX, поэтому я обычно придерживаюсь популярных команд UNIX для сценариев bash. Я использовал параметр -P, чтобы иметь возможность регулярного выражения для форматирования строк с помощью \ t \ n, а что нет. Я обязательно посмотрю на Perl! – areyoujokingme