У мене є команда заміни sed, що я хотів би бути сумісним як з BSD, sed
так і з GNU sed
. Розширені регулярні вирази не є проблемою, тому що мені в цьому випадку вони не потрібні. Моя основна проблема полягає в різниці в тому, що два sed
інтерпретують послідовності виходу символів у рядках заміни . Мій рядок заміни містить вкладки та нові рядки, і я хотів би, щоб вони були видимими в командних рядках для зручності обслуговування, однак, BSD sed
не інтерпретує послідовності виходу, а GNU sed
робить . Який відповідний спосіб доручити sed
інтерпретувати ці послідовності евакуації на 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
BSD не інтерпретується як послідовність втечіsed
Тепер до мого питання. Відповідно до сторінки BSD sed
:
Щоб вказати символ рядка в рядку заміни, передуйте його з косою рисою.
Чи означає це, що мені потрібно передувати буквальний новий рядок зворотним нахилом? Який спосіб підказати sed
інтерпретувати послідовності втечі, як \n
у тексті заміни?
sed
. Зрештою, мабуть, буде сенс використовувати awk. Отже, що ви думаєте про інтерпретацію цитованої мною сторінки BSD sed?