我有一個數據集,119列用空格分隔,並喜歡選擇列(3,7,11,...,47,51),(52,53,54,...,118,119)並打印它們出到另一個文件。我怎樣才能用awk做到這一點?如何使用awk打印每第4列至第n列和從第(n + 1)列到最後一列?
Input file
c1 c2 c3...c119
Output file
c3 c7 c11 ... c51 c52 c53 c54 ... c118 c119
感謝您的幫助
我有一個數據集,119列用空格分隔,並喜歡選擇列(3,7,11,...,47,51),(52,53,54,...,118,119)並打印它們出到另一個文件。我怎樣才能用awk做到這一點?如何使用awk打印每第4列至第n列和從第(n + 1)列到最後一列?
Input file
c1 c2 c3...c119
Output file
c3 c7 c11 ... c51 c52 c53 c54 ... c118 c119
感謝您的幫助
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
似乎你需要清空變量** s **爲下一個記錄 – 2011-02-27 03:51:31
@belisarius:固定。 – 2011-02-27 12:47:55
awk 'for(i=3;i<=119;i+a)
{
if (i<52)
{
printf "%s ",$i};
a=4;
}
else
{
printf "%s ",$i};
a=1;
}
}' file
是否打印每個輸入記錄一個輸出記錄,或者爲每列一個記錄? – 2011-02-27 03:48:38
它將按列打印。 – kurumi 2011-02-27 03:52:38
似乎OP需要由一行中的所有列組成的輸出文件(我猜) – 2011-02-27 03:54:13