使用 awk 指令格式化文字檔

使用 awk 指令格式化文字檔

我正在使用這個命令:

awk 'NR>1 {print $1"  "$2}' fort.75 > newfort.75

並得到輸出為

     7  -2.2964292555E+000
     8 -2.3013363831E+000
     9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

但所需的 o/p 是

      7 -2.2964292555E+000
      8 -2.3013363831E+000
      9 -2.3071951989E+000
     10 -2.3136811351E+000
     11 -2.3207311925E+000

第一個欄位中的值的格式應使它們都具有相同的寬度。此外,第二個欄位應從每行的同一列開始。

答案1

您可能意味著您希望按列輸出(儘管在您的範例中資料也不同)。如果是這樣,請嘗試以下操作:

awk 'NR>1 {print $1 "\t" $2}' fort.75 > newfort.75

這將用製表符分隔您的輸出\t

printf另一種可能性是按照Archemar的建議使用:

awk 'NR>1 {printf("%4i %f\n",$1,$2);}' fort.75 > newfort.75

其中第一列的格式為(在本例中)4 個字元寬度 - 根據需要進行調整。此空格由空格“”(無雙關語)填充,並且不使用製表符。但是,浮點數也會重新格式化,因此請檢查這是否適合您。如果不是,請將第二列視為字串:

awk 'NR>1 {printf("%4i %s\n",$1,$2);}' fort.75 > newfort.75

相關內容