Это одна строка входного файла:
FOO BAR 0,40 0,20 0,40 0,50 0,60 0,80 0,50 0,50 0,50 -43,00 100010101101110101000111010
И команда awk, которая проверяет определенную позицию, если это «1» или «0» в столбце 13
Что-то вроде:
awk -v values="${values}" '{if (substr($13,1,1)==1) printf values,$1,$3,$4,$5,$6,$7,$8,$9,$10,$11,$12,$13}' foo.txt > bar.txt
Переменная values работает, но я просто хочу в приведенном выше примере проверить, равен ли первый бит "1".
EDIT
Хорошо, так что, думаю, я не очень ясно поняла свой вопрос. «$ 13» в методе substr фактически является цепочкой битов. Таким образом, этот awk хочет передать все строки в foo.txt, которые имеют «1» в позиции «1» цепочки битов в столбце «$ 13». Надеюсь, это проясняет ситуацию.
РЕДАКТИРОВАТЬ 2
Хорошо, позвольте мне разобраться с этим очень легко. Приведенный выше код является примером, поэтому строка ввода является одной из многих строк. Так что не все строки имеют 1 в позиции 8. Я дважды проверил, есть ли в определенной позиции оба случая, так что в любом случае я должен получить какой-то вывод. Дело в том, что во всех строках он не находит никаких «1» в позициях, которые я выбираю, но когда я говорю, что ему нужно найти «0», он возвращает мне все строки.