Выравнивание строк в текстовом файле - PullRequest
0 голосов
/ 12 июля 2020

У меня есть данные в текстовом файле, как показано ниже

E993143|65282
C960954567|50222
P1_ABCDEFG_bbb|26153
A960416|25654
D987747|13410

Я хотел бы иметь правильное выравнивание, используя linux, как показано ниже

E993143                  |65282
C960954567               |50222
P1_ABCDEFG_bbb           |26153
A960416                  |25654
D987747                  |13410

Может ли кто-нибудь помочь мне здесь ? Примечание: я не могу использовать формат excel

Ответы [ 2 ]

1 голос
/ 12 июля 2020

Вы можете использовать awk для текста следующим образом:

awk -F"|" '{printf("%-15s \t |%-10i\n", $1, $2)}'

Здесь я установил максимальную длину для 1-го столбца как «15», а для второго как «10». Вы можете изменить эти числа, если ожидаете большую длину.

Объяснение:

  • Флаг "- F" определяет разделитель как "|"
  • "% -15s \ t |% -10i \ n "- этот раздел определяет, как мы хотим отформатировать строку вывода. '-' в '-15s' - для выравнивания выходного столбца по левому краю, а '15s' - для строки длиной 15 символов. Точно так же «-10i» соответствует целочисленному значению 10 di git. «\ t» и «\ n» - это добавить пробел табуляции между ними и пробел строки в конце.

Вывод:

➜  test cat test.txt | awk -F"|" '{printf("%-15s \t |%-10i\n", $1, $2)}'
E993143                  |65282     
C960954567               |50222     
P1_ABCDEFG_bbb           |26153     
A960416                  |25654     
D987747                  |13410     
➜  test 
0 голосов
/ 12 июля 2020

вам может помочь инструмент «столбец»: https://www.stefaanlippens.net/pretty-csv.html. например,

cat test.csv | column -t -s \| -o \|

"|" требует экранирования при использовании в качестве ввода параметра

...