【问题标题】:print columns with AWK使用 AWK 打印列
【发布时间】:2013-03-30 17:42:32
【问题描述】:

我试图只打印奇数列,但我不能!

awk '{for (i=1; i<=NF; i++) print $2*i-1}' file > test

但它会将所有内容打印在一列中!

你能帮帮我吗?

谢谢

【问题讨论】:

    标签: awk


    【解决方案1】:

    只需使用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 吗?
    • @MaryamSani:最后的1 强制awk 为每一行返回true,从而启用每一行的打印。与:awk '{ for (i=2;i&lt;=NF;i+=2) { $i="" } print $0 }' file &gt; test 相同,只是更尴尬。 HTH。
    • 一个小问题是这个print $0 在每一列之后添加了OFS,即使是包含null的列。
    • @MarekŽidek 如果您需要完全删除列,另一种解决方案是建立奇数列的记录,并在循环耗尽后将其打印出来:awk '{ for (i=1; i&lt;=NF; i+=2) { r = (r ? r OFS : "") $i }; print r; r="" }' file
    猜你喜欢
    • 2011-04-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-18
    • 2023-03-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多