У меня есть команда замены 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, которую я цитировал?