Вы могли бы столкнуться с проблемами с cut
если у Вас есть несколько пробелов как разделитель. Вы могли использовать awk
:
$ awk '{print $2, $4, $5}' OFS='\t' inputfile
BB DD BB
2 4 9
6 8 10
(Вы могли предоставить входное и выходное использование разделителя FS
и OFS
соответственно.)
Править: Согласно Вашим комментариям, если значения находятся в неизвестных столбцах, Вы могли бы сказать:
awk 'NR==1{for(i=1; i<=NF; i++) if ($i=="BB" || $i=="DD") {a[i]++;} } { for (i in a) printf "%s\t", $i; printf "\n"}' filename
Для Вашего входа это привело бы к:
BB DD BB
2 4 9
6 8 10
Это работает путем отслеживания столбцы в первой строке, содержащей BB
или DD
и затем распечатывание тех столбцов.
Если Вы намереваетесь использовать переменную для хранения значений столбцов, Вы могли бы объявить один как:
pattern="^BB$|^DD$"
(обратите внимание что привязки ^
& $
были добавлены для обеспечения этого BB
не соответствует ABB
и так далее. |
снова, regex обозначение метасимвола or
)
и затем скажите:
awk -vp="$pattern" 'NR==1{for(i=1; i<=NF; i++) if ($i~p) {a[i]++;} } { for (i in a) printf "%s\t", $i; printf "\n"}' filename
При загрузке пакетов раздел и приоритет читаются из файла .Changes
. Файлы :
stanzas (см. https://www.debian.org/doc/debian-policy/ch-controfolds.html#sf-files ).
Чтобы получить раздел и приоритет из .DSC
(и связанных файлов), вы можете использовать DSCEXTRACT
из пакета Packcripts
с небольшим сценарием Отказ
dscextract <yourdsc> debian/control
извлеките Debian / Control
(или сбой, если он не может); Затем вы можете прочитать раздел и приоритет от исходного раздела файла управления (остановка на первой пустой строке).
Проблема заключалась в том, что поскольку заявление СУ было в двойных цитатах, переменные все были расширены до того, как называлось командование SU, что означает, что $ var становится «кошкой», но $ я становится «», так как Это не было определено. Bash не знает, что предполагалось, что она должна быть переменной итератора, она просто расширяет его в нулевую строку. Ответ - избежать этого «$» так:
#!/bin/bash
var=cat
modules=(
one
two
three
four
)
start() {
su gleventh -c "for i in ${modules[@]}; do echo -- \$i -- $var; done"
}
$1
echo "out of function"
for i in ${modules[@]}; do echo -- $i -- $var; done
Специальный параметр $ {Array [@]}
в двойных цитатах вызывает раздел слова, если массив имеет более одного участника:
$ for word in "for i in ${arr[@]} ; do" ; do echo "$word" ; done
for i in a
b
c ; do
Если имена ваших модулей не содержат пробелов, вы можете Удачи использовать индекс *
:
$ for word in "for i in ${arr[*]} ; do" ; do echo "$word" ; done
for i in a b c ; do