$ 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
Установите для разделителя полей ввода(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
$ perl -F'<xxx>' -pale ' $"="<xxx>";$_ = "@F[1,3,5]"' file
Установите в качестве разделителя полей нужную строку, затем соберите индексы полей, соедините их строкой в $" и сохраните как текущую запись. -p будет распечатан автоматически.