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

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

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

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

Ответы на вопрос(4)

Решение Вопроса

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

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

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

cat infile | awk '{if($2>10) print}' > outfile; cat infile | awk '{if($2<=10) print}' > outfile2
 Ed Morton26 окт. 2012 г., 02:59
а) не делайте этого, и б) если это так, то делайте это awk-ishly: awk '$ 2> 10' infile> outfile; awk '$ 2 <= 10' infile> outfile.

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

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

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

awk '{print > "outfile" ($2>10 ? 1 : 2)}' infile
 Ed Morton12 авг. 2015 г., 20:36
Конечно, просто укажите любой путь, который вам нравится, например,print > "../outfile" или жеprint > "/usr/tmp/outfile" или что вам нужно.
 gloomy.penguin12 авг. 2015 г., 20:35
Эй - это выстрел в темноте, на который я получаю ответ, но ... awk ставит"outfile" в каталог входного файла (или, по крайней мере, это то, что он делает для меня прямо сейчас). Есть ли в любом случае я могу изменить каталог? Я тоже использую динамическое имя файла ...... file = sprintf(...); print > file; ...
 gloomy.penguin12 авг. 2015 г., 20:44
не важно ... я просто ответил на это сам. извиняюсь. Благодарю.

Ваш ответ на вопрос