У меня есть команда замены sed, которую я хотел бы совместить с BSD sedи GNU sed. Расширенные регулярные выражения не являются проблемой, так как они мне не нужны в этом случае. Моя основная проблема заключается в том, что эти две sedпары интерпретируют escape-последовательности символов в строках замены . Моя замена строка содержит вкладки и новую строку , и я хотел бы, чтобы они были видны в командных строках для удобства обслуживания, однако, BSD sedне интерпретируют управляющие последовательности и GNU sed делает . Как правильно sedинтерпретировать эти escape-последовательности в BSD? Следующие два фрагмента воплощают мою проблему:
GNU sed
echo ABC | sed 's/B/\n\tB\n'
yeilds
A
B
C
BSD sed
echo ABC | sed 's/B\n\tB\n'
доходность
AntBnC
Очевидно, \nи \tне интерпретируются как escape-последовательности BSDsed
Теперь на мой вопрос. Согласно sedсправочной странице BSD :
Чтобы указать символ новой строки в строке замены, поставьте перед ним обратную косую черту.
Означает ли это, что мне нужно предшествовать буквальному переводу строки с помощью обратной косой черты? Как правильно sedинтерпретировать escape-последовательности, как \nв тексте замены?
sed. В конце концов, возможно, имеет смысл использовать awk. Так что вы думаете о толковании man-страницы BSD sed, которую я цитировал?