Возможно ли печатать различные строки в разные выходные файлы с помощью awk

Я хочу печатать разные строки в разных выходных файлах с помощью awk, в зависимости от разных условий, например

awk '{if($2>10) print > outfile1; else print > outfile2}' infile

но этот script не работает как его изменить? спасибо! >

Ответ 1

Вам нужно закрыть имена файлов в двойных кавычках:

awk '{if($2>10) {print > "outfile1"} else {print > "outfile2"}}' infile

Ответ 2

Попробуйте сделать это:

awk '{if($2>10) print > "outfile1"; else print > "outfile2"}' infile

Если вы опустите ", вы перенаправляетесь на (возможно, не существующие) переменные. В моем случае я перенаправляю файлы.

Ответ 3

awk '{print > "outfile" ($2>10 ? 1 : 2)}' infile

Ответ 4

Вы можете просто пережить это два раза вместо этого.

cat infile | awk '{if($2>10) print}' > outfile; cat infile | awk '{if($2<=10) print}' > outfile2

Ответ 5

Обозначьте имена своих файлов в двойных кавычках, и вам хорошо идти.