удаление строки комментария из текстового файла - PullRequest
0 голосов
/ 19 сентября 2018

У меня есть текстовый файл со следующим текстом.

/* a comment line in a C program */
 printf("It is /* NOT a comment line */\n");
 x = 5; /* This is an assignment, not a comment line */
 [TAB][SPACE] /* another empty comment line here */
 /* another weird line, but not a comment line */ y = 0;

Я хочу удалить строки, начинающиеся с /* и заканчивающиеся */ только с помощью команд linux.

Я написал для этого следующий код.

egrep "^/*.+*/$" small.txt

Я сохранил текст в моем файле small.txt.

Но он выводит все строки, которые заканчиваются только на */.

Выходной сигнал такой же, как и у.

/* a comment line in a C program */
 x = 5; /* This is an assignment, not a comment line */
 [TAB][SPACE] /* another empty comment line here */

Мой желаемый выходной сигнал

/* a comment line in a C program */

Ответы [ 2 ]

0 голосов
/ 19 сентября 2018

Итак, сначала мы удалим пробелы и табуляции следующим образом.

sed "s/^[ \t]*//" -i small.txt

Это заменит small.txt на тот, в котором удалены ведущие пробелы и табуляции.

Мы запустим следующую команду для извлечения комментариев.

grep  '^/\*.*\*/$' small.txt
0 голосов
/ 19 сентября 2018

Вы можете использовать эту sed для удаления закомментированной строки:

sed '\~^/\*.*\*/$~d' file.c

Или используя grep:

grep -v '^/\*.*\*/$' file.c

 printf("It is /* NOT a comment line */\n");
 x = 5; /* This is an assignment, not a comment line */
 [TAB][SPACE] /* another empty comment line here */
 /* another weird line, but not a comment line */ y = 0;

Для печатитолько соответствующая строка:

sed '\~^/\*.*\*/$~!d' file.c

или с использованием grep:

grep '^/\*.*\*/$' file.c

/* a comment line in a C program */
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...