Удалите символы ESC с помощью sed

Краткий обзор того, как записать и скомпилировать программы в Усовершенствованном Программировании в UNIX® Environment благодаря slm для помощи мне понять шаги. Можно загрузить исходный код отсюда. Мне жаль, что эта информация не была включена как часть приложения b книги, где заголовочный файл объяснен.

Несжатый файл содержит каталоги с названиями глав, и два других назвали include и lib. У тех с названиями глав есть все программы той главы в них.

include каталог содержит заголовочный файл, который используется в большинстве программ в книге: apue.h. lib каталог имеет исходный код реализаций для того заголовка.

Позволяет предполагают, что несжатый файл расположен в: SCADDRESS/, например, это могло бы быть: /home/yourid/Downloads/apue.3e/

После того как Вы распаковываете исходный код, входите в каталог и работаете make:

$ cd SCADDRESS
$ make

make скомпилирует все программы во всех главах. Но важная вещь состоит в том, что прежде, который, это сделает библиотекой, которая будет содержать реализации функций в apue.h.

Для компиляции примера программы, который Вы пишете из книги работайте, эта команда GCC (берущий имя Вашей программы myls.c который является первым в книге):

gcc -o myls myls.c -I SCADDRESS/include/ -L SCADDRESS/lib/ -lapue

-I говорит gcc какой каталог искать включать файл. -L говорит этому местоположение каталога библиотеки, и -lapue, говорит названию файла библиотеки искать в том каталоге. Таким образом, что-LXXX означает искать файл в каталоге библиотеки с именем: libXXX.a или libXXX.so.

2
08.12.2014, 06:57
2 ответа

Если вы хотите, чтобы в выводе было только foo, то

printf '%s' 'foo.bar\033[00m' | sed 's/\.bar\\033\[00m//'

обратите внимание, что и \, и [ должны бежать от другого \. Дополнительно я добавил '%s' в printf для печати вводимых символов в виде буквенной строки, в противном случае \033[ может быть интерпретирован как экранирующий код, за которым следует цвет ANSI.

После редактирования вопроса: Если ваш файл содержит управляющие символы типа

printf "foo.bar\033[00m" > file

, то для его замены запишите следующее:

sed 's/\. barCtrl-vESC\[00m//'

После нажатия Ctrl-vESC на экране должны появиться ^[, но не буквальные ^ и [ (два символа), а один управляющий символ.

3
27.01.2020, 22:00

Вам нужно удалить символы [ и \ с обратным слешем:

printf '%s' "foo.bar\033[00m" | sed 's/\.bar\\033\[00m//'

Или же, если вы хотите удалить все после символа точки в строке:

printf "foo.bar\033[00m" | sed 's/\..*//'
1
27.01.2020, 22:00

Теги

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