Как я могу использовать тройную косую черту в качестве разделителя с вырезом?

awk решение:

awk 'BEGIN{FS="[\t ]+"; OFS="\t"}NR==1{for(i=2;i<=NF;i++)
    {if($i~/VI/) a[i]; }}{r=$1; for(i in a) r=r OFS $i; print l}' file

Вывод:

    OVI 1VI 3VI
er  23  23  23
tr  24  24  24

  • FS="[\t ]+" - разделитель полей ввода

  • OFS="\t" - поле вывода разделитель

  • NR==1 - для первой строки header

  • if($i~/VI/) a[i] - номер поля захвата, если он соответствует VI

  • r=1$; for(i in a) r=r OFS $i; print r - итерация по необходимым номерам полей и вывод их соответствующих значений


Если вы столкнулись с нарушением порядка, используйте следующее с функцией asorti() (для сортировки массива по индексам):

awk 'BEGIN{FS="[\t ]+"; OFS="\t"}NR==1{for(i=2;i<=NF;i++)
    {if($i~/VI/) a[i]; }}{r=$1; asorti(a,b); for(i in b) {r=r OFS $(b[i])} print r}' file
0
14.06.2016, 02:55
0 ответов

Теги

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