【发布时间】:2011-03-02 15:10:03
【问题描述】:
我有一个由空格分隔的 119 列的数据集,我喜欢选择列 (3,7,11,...,47,51), (52,53,54,...,118,119) 并打印他们出到另一个文件。如何使用 awk 做到这一点?
Input file
c1 c2 c3...c119
Output file
c3 c7 c11 ... c51 c52 c53 c54 ... c118 c119
感谢您的帮助
【问题讨论】:
标签: awk
我有一个由空格分隔的 119 列的数据集,我喜欢选择列 (3,7,11,...,47,51), (52,53,54,...,118,119) 并打印他们出到另一个文件。如何使用 awk 做到这一点?
Input file
c1 c2 c3...c119
Output file
c3 c7 c11 ... c51 c52 c53 c54 ... c118 c119
感谢您的帮助
【问题讨论】:
标签: awk
awk '{for(i=3;i<=51;i+=4) printf "%s ",$i ;for(i=52;i<=119;i++) {printf "%s ",$i} ;print ""}' file
【讨论】:
{a="";
for (i=0 ;i<=12; i++) {a = a $(3+4 * i) " "};
for (i=52 ;i<=119; i++) {a = a $(i) " "};
print a}
HTH!
【讨论】:
这就是你要找的吗?
awk '{s=""; for (i = 3; i <= 51; i+=4) {s = s $i " "}; for (i = 52; i <= 119; i++) {s = s $i " "}; print s}' inputfile
【讨论】:
awk 'for(i=3;i<=119;i+a)
{
if (i<52)
{
printf "%s ",$i};
a=4;
}
else
{
printf "%s ",$i};
a=1;
}
}' file
【讨论】: