【发布时间】:2012-10-25 21:31:36
【问题描述】:
我想根据不同的条件,使用awk将不同的行打印到不同的输出文件,比如
awk '{if($2>10) print > outfile1; else print > outfile2}' infile
但是这个脚本不起作用 如何修改它? 谢谢!>
【问题讨论】:
标签: awk
我想根据不同的条件,使用awk将不同的行打印到不同的输出文件,比如
awk '{if($2>10) print > outfile1; else print > outfile2}' infile
但是这个脚本不起作用 如何修改它? 谢谢!>
【问题讨论】:
标签: awk
您需要将文件名用双引号括起来:
awk '{if($2>10) {print > "outfile1"} else {print > "outfile2"}}' infile
【讨论】:
尝试这样做:
awk '{if($2>10) print > "outfile1"; else print > "outfile2"}' infile
如果您省略 ",您将重定向到(可能不存在的)变量。就我而言,我重定向到文件。
【讨论】:
awk '{print > "outfile" ($2>10 ? 1 : 2)}' infile
【讨论】:
"outfile" 放入输入文件的目录中(或者至少这对我来说是正确的现在)。无论如何我可以更改目录吗?我也在使用动态文件名...... file = sprintf(...); print > file; ...
print > "../outfile" 或 print > "/usr/tmp/outfile" 或任何你需要的。
你可以重复两次。
cat infile | awk '{if($2>10) print}' > outfile; cat infile | awk '{if($2<=10) print}' > outfile2
【讨论】:
用双引号引用你的目标文件名,然后你就可以开始了。
【讨论】: