Перечислите выходные данные в табличной форме.

Перечислите выходные данные в табличной форме.

У меня есть выход

Student Name: abc
Roll Num: 123

Student Name: xyz
Roll Num: 124

и мне нужно распечатать в формате ниже

Student Name     Roll Num
abc              123
xyz              124

может ли кто-нибудь помочь мне с простыми командами Linux?

решение1

awkэто не единственный инструмент в наборе, конечно. ВотМиллерВ бою:

%mlr --ixtab --ips : --opprint cat << КОНЕЦ
Имя студента: abc
Номер рулона: 123

Имя студента: xyz
Номер рулона: 124

КОНЕЦ
Имя студента Номер списка
 азбука 123
 xyz 124
%

Вы выполняете преобразование из формата XTAB ( -ixtab) в формат PPRINT ( -opprint).

решение2

Выбирайте:

$ awk -v RS= -F': |\n' -v OFS='\t' 'NR==1{print $1, $3} {print $2, $4}' file
Student Name    Roll Num
abc     123
xyz     124

$ awk -v RS= -F': |\n' -v OFS='\t' 'NR==1{print $1, $3} {print $2, $4}' file | column -s$'\t' -t
Student Name  Roll Num
abc           123
xyz           124

$ awk -v RS= -F': |\n' -v fmt='%-13s %-13s\n' 'NR==1{printf fmt, $1, $3} {printf fmt, $2, $4}' file
Student Name  Roll Num
abc           123
xyz           124

решение3

Method1

awk 'BEGIN{print "Student Name";RS="Student Name:"}{print $1}' p.txt| awk '$0 !~ /^$/' >student.txt
awk   'RS="Roll Num"{print $2}' p.txt|sed '/Name/,/^$/d'| awk 'BEGIN {print "Roll Num"}{print $0}' > roll.txt


paste student.txt  roll.txt


output

Student Name     Roll Num
abc              123
xyz              124



 Method2

awk 'BEGIN{print "Student Name"}{if($1 ~ /Student/){print $3}}' p.txt > student.txt

awk 'BEGIN{print "Roll Num"}{if($1 ~ /Roll/){print $3}}' p.txt > roll.txt

paste student.txt  roll.txt


output

Student Name     Roll Num
abc              123
xyz              124

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