awk 将最后一列放在新行中

awk 将最后一列放在新行中

我有这个

    -77.199997 23.6343749630 39.9989584580 
    -80.000000 23.6364583430 39.9989584580
    -81.599998 23.6385417220 39.9989584580

我想对列重新排序,以便读取第 2 列、第 3 列、第 1 列(纬度、经度、海拔)

我以前曾多次使用过 awk,但由于某种原因,在对列重新排序时,结果是这样的,带有额外的空格

     32.1614584410 43.3385414490
     -2019.400024 
     32.1635418210 43.3385414490
     -2016.800049 
     32.1656252000 43.3385414490
     -2018.500000 

我还有更多,但有人可以告诉我为什么这样做还是我错过了一些东西

    awk -F" " '{print " "$2" "$3" "$1" "}' infile.xyz > outfile.xyz
    awk '{print $2 $3 $1}' infile.xyz > outfile.xyz
    awk -F" " '{print ""$2" "$3" "$1""}' infile.xyz > outfile.xyz

答案1

我必须在所有 infiles 上运行 dos2unix,之后一切正常。

答案2

首先,确保您正在使用空间并不是选项卡在输入文件中。

然后,尝试用逗号分隔变量,如下所示:

awk '{print $2,$3,$1}' infile.xyz > output.xyz

如果将变量并排放置(如 in )$2 $3 $1awk则会将它们连接起来。

另外,您可能想尝试该printf功能,因为它提供了更好的格式化功能。

相关内容