跨行移动列

跨行移动列

我正在处理一个 txt 文件,并尝试将第一列/字段保留在适当的位置,但将第二列向下移动 1 行。我尝试了这个,但它给出了错误unmatched .'s。

awk  '{for(i=1; i<NR; i++) FNR==i {print i, $(i+1)}}’ filename

答案1

我猜你想要

awk '{tmp = $2; $2 = prev; prev = tmp; print}' filename

列之间的任何空格都将折叠为一个空格。

例子

$ seq 12 | paste - - -
1       2       3
4       5       6
7       8       9
10      11      12

$ seq 12 | paste - - - | awk '{tmp = $2; $2 = prev; prev = tmp; print}' 
1  3
4 2 6
7 5 9
10 8 12

相关内容