Возврат неверных результатов в perl-скрипте [дубликат]

somecommand | fold | awk '{ print "\t" $0 }'

Esto tomaría la salida desomecommand(por ejemplo echo), la enviaría a través de fold, lo que la doblaría en 80 caracteres (use fold -w Npara doblar en Ncaracteres ). Luego, el script awkimprimirá cada línea sangrada por un carácter de tabulación.

Hacer plegado en puro bashtiene como resultado un guión más complicado.

0
17.06.2019, 12:58
2 ответа

Поскольку вы используете двойные кавычки для строки в Perl, \в строке интерпретируется Perl.

Используйте двойную обратную косую черту, напримерsystem("sed -i 's/\\[-.*-]//g' error.txt");

Или используйте [[]вместо \[, т.е.system("sed -i 's/[[]-.*-]//g' error.txt");
Этот вариант будет работать и в оболочке.

1
28.01.2020, 02:40

Обратная косая черта внутри строки в двойных кавычках в Perl интерпретируется Perl, поэтому выполняется команда

 sed -i 's/[-.*-]//g' error.txt

и это удалит символы минус, точки и звездочки. То, что ты второй раз перечисляешь минус, sed не волнует.

Perl имеет ряд инструментов цитирования, в частности, вы можете использовать оператор q, поэтому

 system(q(sed -i 's/\[-.*-]//g' error.txt));

будет работать. См.man perlop

0
28.01.2020, 02:40

Теги

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