Форматирование текстового файла с помощью команды 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

Но желаемый о/п есть

      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

Это разделит ваш вывод символом TAB \t.

Другая возможность — использовать printfвариант, предложенный Арчемаром:

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

где первый столбец отформатирован (в данном случае) до ширины в 4 символа — отрегулируйте по желанию. Пространство заполнено пробелом " " (без каламбура) и не используется TAB. Однако числа с плавающей точкой также переформатируются, поэтому проверьте, подходит ли это вам. Если нет, обрабатывайте второй столбец как строку:

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

Связанный контент