как заменить шаблон на строку в зависимости от части шаблона? - PullRequest
1 голос
/ 01 апреля 2011

У меня следующая проблема.Я интерпретирую входной файл, и теперь я сталкиваюсь с этим: мне нужно перевести %%BLANKx в x пробелы.

Итак, где бы я ни находился во входном файле, например %%BLANK8Мне нужно заменить %%BLANK8 на 8 пробелы, %%BLANK10 на 10 пробелы и т. Д.

Ответы [ 4 ]

0 голосов
/ 01 апреля 2011

с использованием "%% BLANK" в качестве разделителя записей, теперь, если любая новая запись, начинающаяся с числа, заменяет число пробелами.

awk 'BEGIN {RS="%%BLANK";ORS=""}{MatchFound=match($0,"^[0-9]+",Matched_string);if(MatchFound){sub(Matched_string[0],"",$0);for (i=0;i<Matched_string[0];i++){$0=" "$0};print $0}else{print $0}}' InputFile.txt
0 голосов
/ 01 апреля 2011

попробуйте это. Я не проверял исчерпывающе

$ awk '/BLANK/{ match($0,/%%BLANK([0-9]+)/,a);s=sprintf("%"a[1]"s","") ; gsub(a[0],s)}1' file

или рубин (1,9 +)

$ ruby -ne 'print $_.gsub(/%%BLANK(\d+)/){|m|" "*$1.to_i}' file
0 голосов
/ 01 апреля 2011
perl -pe 's/%%BLANK(\d+)/" " x $1/e' input_file
0 голосов
/ 01 апреля 2011

Вы можете разделить свою строку по тегу %% BLANK.После этого вы можете прочитать первые числа, присутствующие в любом из ваших токенов, и преобразовать их в пробелы.Теперь вы можете объединить каждый токен в новую строку.

...