Как выбрать определенные столбцы из файла с разделителем строк

$ expand file | awk '{ print gsub(/ /, " ") }'
11
9
9

Утилита POSIX expandзаменяет табуляцию пробелами. Скрипт awkподсчитывает и выводит количество замен, необходимых для замены всех пробелов в каждой строке.

Чтобы избежать подсчета любых ранее существовавших пробелов во входном файле:

$ tr ' ' '@' <file | expand | awk '{ print gsub(/ /, " ") }'

, где @— символ, который гарантированно не существует во входных данных.

Если вы хотите 10 пробелов на табуляцию вместо обычных 8:

$ tr ' ' '@' <file | expand -t 10 | awk '{ print gsub(/ /, " ") }'
9 
15
13
1
08.09.2019, 20:13
2 ответа

Установите для разделителя полей ввода(FS)и разделителя полей вывода(OFS)значение <xx>:

.
awk 'BEGIN{FS=OFS="<xx>"} {print $1,$2,$5}' file

Выход:

one<xx>two<xx>five
one11<xx>two11<xx>five11

См.:8 Мощный Awk, встроенный -в переменных — FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

4
27.01.2020, 23:17
$ perl -F'<xxx>' -pale ' $"="<xxx>";$_ = "@F[1,3,5]"' file

Установите в качестве разделителя полей нужную строку, затем соберите индексы полей, соедините их строкой в ​​$" и сохраните как текущую запись. -p будет распечатан автоматически.

0
27.01.2020, 23:17

Теги

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