22

我想根据不同的条件,使用 awk 将不同的行打印到不同的输出文件,比如

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

但是这个脚本不起作用如何修改它?谢谢!>

4

5 回答 5

24

您需要用双引号关闭文件名:

awk '{if($2>10) {print > "outfile1"} else {print > "outfile2"}}' infile
于 2012-10-25T21:34:28.977 回答
8

尝试这样做:

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

如果您 ommit ",您将重定向到(可能不存在的)变量。就我而言,我重定向到文件。

于 2012-10-25T21:33:44.083 回答
4
awk '{print > "outfile" ($2>10 ? 1 : 2)}' infile
于 2012-10-25T22:05:30.377 回答
0

你可以只复习两次。

cat infile | awk '{if($2>10) print}' > outfile; cat infile | awk '{if($2<=10) print}' > outfile2
于 2012-10-25T21:33:34.763 回答
0

用双引号引用您的目标文件名,您就可以开始了。

于 2012-10-25T21:35:28.320 回答