Список выходных данных в виде таблицы

сawk:

awk -F, '{
    printf $1 FS $2 FS; 
    split($3, arr, / +/); for(val in arr) !uniq_arr[ arr[val] ]++;
    for (key in uniq_arr) { 
        printf (key!="")? SPACE key:""; SPACE=" "; delete uniq_arr[key]
    };
    printf FS $4"\n"
}' infile

[1], Value1, UAC, AB
[2.2], Check1, D2A BOH, SD
[63], name2, MFB, k
  • Это split($3, arr, / +/)разбивает столбец #3 на массив arrна основе разделителя пробелов (, может быть один -или -больше пробелов в качестве разделителя ).

  • В for(val in arr) !uniq_arr[ arr[val] ]++мы создаем новый массив с удаленными повторяющимися значениями, взятыми из массива arr; поэтому окончательные значения в массиве uniq_arrявляются уникальными значениями только в каждом столбце3.

  • затем мы просто печатаем сохраненные значения в uniq_arrи удаляем этот ключ после того, как он напечатан; обратите внимание, что значения столбцов #1, #2 и #4 печатались отдельно.

см. также:

0
22.03.2020, 11:52
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
1
28.04.2021, 23:19
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
0
28.04.2021, 23:19

Теги

Похожие вопросы