специальные символы типа ! #@ создать проблему при использовании sed для перехода к следующей строке в файле

Вы можете использовать sedдля удаления пробелов, ведущих к последовательности ]]:

sed 's/ *]]/]]/g' file.xml

Здесь регулярное выражение " *]]" соответствует любому пробелу (" " )ноль или более раз (" *" ), за которым следует литерал " ]]». Любые такие совпадения затем заменяются на «]]». Результат записывается в stdout , где вы можете перенаправить его любым удобным способом.

Если у вас есть подходящая версия sed, вы можете использовать " \s" вместо " " для указания любого символа пробела (, т.е. не только пробелов, но также табуляции и другие непечатаемые -символы ).

0
28.03.2021, 20:25
1 ответ

В операторе sed лучше использовать двойные кавычки там, где этого требует использование переменных, а чтобы bash не интерпретировал восклицательный знак, а не расширял обратную косую черту, вы можете перейти к использованию read -r, что-то вроде этого:

while read -r pass do
    #... code here...
done < <(sed -n "$startline,$endline"'{s/!/\x21/g;p}' "$wl_pass")

использование printfили echo -eс $pass внутри цикла должно возвращать восклицательные знаки

0
28.04.2021, 22:55

Теги

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