我正在处理一个 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