Как составить список содержимого каталога, за исключением символических ссылок и их указателей?

$i внутри выражения awk не ссылается на переменную оболочки i. Вы можете передать переменную в командной строке с помощью -v i="$i"и обратиться к ней как к обычной i.

Также {....}определяет действие , а не шаблон ; вы, кажется, хотите выполнить действие по умолчанию (print), когда шаблон $2 == iверен. Так

for i in $(seq 1 3); do 
  awk -F "\t" -v i="$i" '$2 == i' 
input  > cluster.$i.txt; done

Однако вместо того, чтобы вызывать awk по одному разу для каждого индекса, вы можете сделать что-то вроде

awk -F "\t" '{print > "cluster" $2 ".txt"}' input

, который использует входные данные $2напрямую для построения имени выходного файла.

Обратите внимание: если вы специально не пытаетесь предотвратить разбиение поля -на символы пробела, вы, вероятно, можете удалить -F "\t"и разрешить awk разбивать разделители пробелов по умолчанию.

0
03.09.2021, 19:38
0 ответов

Теги

Похожие вопросы