Разобрать все символы c ++ в текстовом файле, используя SED, ECHO и C ++ FILT. - PullRequest
0 голосов
/ 18 декабря 2018

Рассмотрим входной файл, который имеет следующее содержимое:

RANDOM CONTENTS1
FN:4,_Z1fv
FN:5,_Z1gv
RANDOM CONTENTS2

Необходимо найти искаженные символы во входном текстовом файле и заменить их их выделенными именами и распечатать как выходные данные, как показано ниже:

RANDOM CONTENTS1
FN:4,f()
FN:5,g()
RANDOM CONTENTS2

С учетом того, что нет другой строки, которая будет иметь запятую с последующим подчеркиванием.Итак, я могу использовать «, (_. *)» Для захвата искаженного символа в файле input.txt.

Когда я использую приведенную ниже команду в оболочке tcsh, она не работает.Вывод все тот же, что и input.txt.Я не могу понять, почему.

sed "s#,\(_.*\)#,`echo \\1 | /usr/bin/c++filt`#" input.txt

Что не так с командой?

1 Ответ

0 голосов
/ 18 декабря 2018

Я думаю, что это можно сделать проще, используя perl

perl -i.bak -pe 'chomp($_ = qx{echo \"$_\" | /usr/bin/c++filt}) if /,_/' input.txt
...