Как поменять местами порядок каждой пары символов в строке?

Вы могли дать ему попытку в jnettop: http://sourceforge.net/projects/jnettop/ - http://www.freshports.org/net-mgmt/jnettop/, но информация об идентификаторе процесса должен отсутствовать.

С iftop у Вас мог быть подробный отчет о пропускной способности (iftop -i re0 -N -P), но Вы не будете видеть (снова) идентификатор процесса определенного сетевого трафика. Необходимо будет вывести, какой трафик связан с какой программное обеспечение.

Существует названный инструмент nethogs на Linux, но начиная с него heavly зависит от /proc не могло быть тривиальным для портирования его на FreeBSD - http://marc.info/?l=freebsd-questions&m=127092700612560&w=2

2
12.05.2015, 05:07
3 ответа

Можно использовать обратные ссылки:

echo A627E39B | sed 's/\(.\)\(.\)/\2\1/g'

При этом обнаруживаются все вхождения двух символов и происходит их замена.

Как Гленн Джекман указанный, включая расширенные регулярные выражения (-E w/GNU, BSD, или toybox sed s) избегает необходимости избегать круглых скобок:

echo A627E39B | sed -E 's/(.)(.)/\2\1/g'
7
27.01.2020, 21:50

Вы также можете использовать Perl :

$ echo A627E39B | perl -CLS -nle 'print map {~~reverse} unpack "(a2)*"'
6A723EB9
0
27.01.2020, 21:50

Есть утилита, которая поддерживает эту функцию: dd с преобразованием swab (swap bytes):

% echo ABCD | dd conv=swab
BADC
0+1 records in
0+1 records out
5 bytes (5 B) copied, 0.000109277 s, 45.8 kB/s

нужно добавить 2> /dev/null, чтобы отменить вывод журнала:

% echo ABCD | dd conv=swab 2> /dev/null
BADC

Предупреждение: Это сделает практически все, что вы хотите, если вы отправите его. четное количество (печатаемых) символов.  Но, если вы дадите нечетное количество печатаемых символов - скажем, 2n+1 - тогда dd возьмет новую строку в конце. в качестве (2n+2)th символа, и поменять его на (2n+1)th.  Итак,

% echo ABCDE | dd conv=swab 2> /dev/null

отправляет

A B C D E \n

на dd, что дает вам

B A D C \n E

обратно; это будет выглядеть как

BADC
E

Вы можете работать над этим, указав опцию -n на echo. подавление новой линии в конце (или просто используйте printf без добавления новой строки).  Если вы отображаете вывод на экран, то для полноты, вы должны добавить новую строку в самом конце:

% echo -n ABCDE | dd conv=swab 2> /dev/null; echo
BADCE

% printf "%s" ABCDE | dd conv=swab 2> /dev/null; printf "\n"
BADCE
3
27.01.2020, 21:50

Теги

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