Intereting Posts
Интеграция alsa для gnome не работает Переполнение / tmp смонтировано при наличии свободного места на / Как сохранить VPN-соединение в режиме ожидания или ограничить время ожидания? эхо-имена и количество строк для каждого файла в каталоге Установка VMWare Tools Установка Debian 9 в Dell Inspiron 7559 настроить postfix для приема почты из двух WAN Как я могу отправить электронную почту без использования uuencode и отключения звука? Как написать скрипт, который эффективно определяет имя дистрибутива? Что может пойти не так, если мы отключим selinux Bigger X11 Cursors подходит для экранов 4k fetchmail без mda Gentoo Linux: включение эквалайзера mbeq для ALSA прерывает звук приложения, но работает при тестировании с помощью теста колонок Как фильтровать stdout программы через grep, все еще контролируя программу? Может ли chmod в каталоге без –recursive изменить, кто может прочитать файл в этом каталоге?

команда терминала, которая печатает вкладки, пробелы и символы новой строки как \ t \ s и \ n

Я написал терминальную программу в c, которая преобразует вкладки в пробелы. И я хотел бы видеть, что он работает и сколько пробелов было преобразовано из вкладок. Проблема в том, что когда я создаю файл с именем input.txt и передаю его в программу, он просто показывает пробелы для обеих вкладок и пробелов, а не для фактических символов \ t и \ s. Поэтому мне интересно, существует ли существующая команда терминала, которая может принимать выходные данные моей программы и заменять табуляции и пробелы на \ t и \ s соответственно:

cat input7.txt | ./detab abc def 

Возможно, что-то вроде:

 cat input7.txt | ./detab | command abc\s\s\sdef\s\s\s 

Существует ли такая команда уже?

В Linux, cat -T показывает вкладки как ^I Существуют и другие варианты создания видимых пробелов, для отображения управляющих символов в печатной форме и т. Д.

Если вы хотите сравнить результат своей программы с оригиналом, вы можете использовать diff :

 ./detab input7.txt | diff input7.txt - | cat -T 

Вы также можете сравнить ввод вашей программы с expand стандартной утилиты.

Если вы хотите точно преобразовать пространства в \s и tabs в \t , вы можете использовать sed:

 sed -e 's/\\/\\\\/g' -e 's/\t/\\t/g' -e 's/ /\\s/g' 

(Первое выражение удваивает обратную косую черту, что делает преобразование однозначным.)