Как декапсулировать GRE (ERSPAN Type II )в Ubuntu 18.04 LTS?

Если вы ищете универсальное решение с помощью других инструментов командной строки -, для этого можно использовать Awk.

var=$'\t\t\tnewcontent'
echo "$var" | awk '{ gsub(/^[\t]+/," ",$0) }1'

Приведенная выше команда заменяет еще одно вхождение Tab одним пробелом, т.е. 2 и аргумент в gsub. Однако вы можете настроить его, создав необходимое количество пробелов

awk -v n=5 ' BEGIN{ spaces = sprintf("%"n"s"," ") }{ gsub(/^[\t]+/,spaces,$0) }1'

Судя по последнему обновлению, OP хочет заменить количество ведущих вкладок точным количеством найденных пробелов,

awk -F$'\t' '{ spaces = sprintf("%"(NF-1)"s"," "); gsub(/^[\t]+/,spaces,$0) }1'

Логика заключается в установке разделителя полей на \t, количество ведущих вкладок можно определить, выполнив NF-1. Определив количество ведущих вкладок, используйте его для создания того же количества пробелов из более раннего метода sprintf().

Вы можете увидеть это, проверив hexdump -Cдо и после замены

echo "$var" | hexdump -C
00000000  09 09 09 6e 65 77 63 6f  6e 74 65 6e 74 0a        |...newcontent.|
0000000e

теперь с заменой

echo "$var" | awk -F$'\t' '{ spaces = sprintf("%"(NF-1)"s"," "); gsub(/^[\t]+/,spaces,$0) }1' | hexdump -C
00000000  20 20 20 6e 65 77 63 6f  6e 74 65 6e 74 0a        |   newcontent.|
0000000e
0
20.05.2020, 16:25
0 ответов

Теги

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