【发布时间】:2013-03-30 17:42:32
【问题描述】:
我试图只打印奇数列,但我不能!
awk '{for (i=1; i<=NF; i++) print $2*i-1}' file > test
但它会将所有内容打印在一列中!
你能帮帮我吗?
谢谢
【问题讨论】:
标签: awk
我试图只打印奇数列,但我不能!
awk '{for (i=1; i<=NF; i++) print $2*i-1}' file > test
但它会将所有内容打印在一列中!
你能帮帮我吗?
谢谢
【问题讨论】:
标签: awk
只需使用i+=2:
awk '{ for (i=1;i<=NF;i+=2) print $i }' file > test
对于新要求,只需将“偶数”列设为 null:
awk '{ for (i=2;i<=NF;i+=2) $i="" }1' file > test
【讨论】:
1 强制awk 为每一行返回true,从而启用每一行的打印。与:awk '{ for (i=2;i<=NF;i+=2) { $i="" } print $0 }' file > test 相同,只是更尴尬。 HTH。
print $0 在每一列之后添加了OFS,即使是包含null的列。
awk '{ for (i=1; i<=NF; i+=2) { r = (r ? r OFS : "") $i }; print r; r="" }' file