Печатать диапазон столбцов, разделенных запятыми, а остальные - без разделения.

Было бы проще использовать systemctl enable media-data.mount , чтобы включить его при перезагрузке.

1
24.04.2017, 12:55
3 ответа

Вы имеете в виду что-то вроде этого:

awk '{a = ""; for (i = 13 ; i <= NF ; i++) a = a $i; 
       print $1 "," $10 "," $11 "," $12 "," a}'

Ввод

a b c d e f g h i j k l m n o p q r s t u v w x y z

дает:

a,j,k,l,mnopqrstuvwxyz

То есть поля, начиная с 13, конкатенируются вместе, а затем выводятся после 1, 10, 11 и 12.

7
27.01.2020, 23:14

Один из способов:

awk -v OFS=, '{print $1, $10, $11, $12, ($13 $14 $15 $16 $17 $18 $19) }'
2
27.01.2020, 23:14
perl -lane 'print join(",", @F[0,9..11], q//), @F[12..$#F]'

Пояснение

  1. Массив @Fсодержит поля в строке. @F[...]относится к sliceэлементам массива @F. Таким образом, @F[0,9..11]— это срез, состоящий из 1-го, 10-го и 12-го элементов @F, которые затемjoin-объединяются вместе с помощью comma, а фиктивный пустой элемент q//добавляется к срезу для создания требуемого ,для грядущего slice. Другойslice@F[12..$#F]собирает с 13-го по последний элемент массива @Fчерез $#F, который содержит idx последнего элемента. (Обратите внимание, что индексация массива равна нулю -, начиная сPerl).
  2. Различные аргументы printтеперь объединены вместе с OFS=$,(по умолчанию равным null ).
0
27.01.2020, 23:14

Теги

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