Рейтинг:-2

Введение пустых строк между совпавшими разделами

флаг jp

У меня есть следующая функция bash, которая использует сед для извлечения разделов, происходящих между ## Режим: орг. и ## # Конец организации, куда # является символом комментария. Наконец, я удаляю символ комментария и любые пробелы.

это мой вклад

кошка /home/flora/docs/recnotes.txt
   ## Режим: орг.
   # Назначает позиционные параметры оболочки или изменяет значения оболочки
   #  параметры. Опция -- присваивает позиционные параметры
   # аргументы {set}, даже если некоторые из них начинаются с параметра
   # префикс `-'.
   ## # Конец организации

     ;; Режим: орг.
     ; Назначает позиционные параметры оболочки или изменяет значения оболочки
     ; параметры. Опция -- присваивает позиционные параметры
     ; аргументы {set}, даже если некоторые из них начинаются с параметра
     ; префикс `-'.
     ;; # Конец организации
 
       @c Режим: орг.
       @c Присваивает позиционные параметры оболочки или изменяет значения оболочки
       варианты @с. Опция -- присваивает позиционные параметры
       @c аргументы {set}, даже если некоторые из них начинаются с параметра
       @c префикс `-'.
       @c # Конец организации

Вот функция bash с реализацией в сед.

захватить ()
{
 локальный файл = "$1"

 местный чаркл бегорг эндорг

 charcl_ere='^[[:space:]]*([#;!]+|@c|\/\/)[[:space:]]*'
 charcl_bre='^[[:space:]]*\([#;!]\+\|@c\|\/\/\)[[:space:]]*'

 begorg="${charcl_bre}"'Режим: org$'
 endorg="${charcl_bre}"'# Конец организации$'

 mdr='^Режим: org$' ; edr='^# Конец org$'

 sed -n "/$begorg/,/$endorg/ s/$charcl_bre//p" "$efile" |
  sed "/$mdr\|$edr/d"
}

Первоначально у меня были две команды как

begorg='${charcl_bre}Режим: org$'
endorg='${charcl_bre}# Конец организации$'

которые не расширяли переменную charcl_bre.

Выход

Назначает позиционные параметры оболочки или изменяет значения оболочки
параметры. Опция -- присваивает позиционные параметры
аргументы {set}, даже если некоторые из них начинаются с параметра
префикс `-'.
Назначает позиционные параметры оболочки или изменяет значения оболочки
параметры. Опция -- присваивает позиционные параметры
аргументы {set}, даже если некоторые из них начинаются с параметра
префикс `-'.
Назначает позиционные параметры оболочки или изменяет значения оболочки
параметры. Опция -- присваивает позиционные параметры
аргументы {set}, даже если некоторые из них начинаются с параметра
префикс `-'.

Я хотел бы сделать пустую строку между разделами.

Artur Meinild avatar
флаг vn
Что еще за вопрос? Пожалуйста, убедитесь, что ваш вопрос понятен и определен.
pLumo avatar
флаг in
Переменные не будут раскрываться в одинарных кавычках.
pLumo avatar
флаг in
Отвечает ли это на ваш вопрос? [Как использовать переменные в команде sed?](https://askubuntu.com/questions/76808/how-do-i-use-variables-in-a-sed-command)
Рейтинг:0
флаг ca

В соответствии с вашим последнее редактирование, вам просто нужно иметь пустую строку между различными разделами комментариев. Вы можете сделать это, изменив последний сед команда от:

sed "/$mdr\|$edr/d"

к:

sed "/$mdr/d; s/$edr//"

Это меняет сед команда на удаление обоих $мдр и $edr строки только для удаления $мдр линию и заменить $edr строку с пустой строкой, эффективно сохраняя пустую строку, которую вы хотите.

Результат:

Назначает позиционные параметры оболочки или изменяет значения оболочки
параметры. Опция -- присваивает позиционные параметры
аргументы {set}, даже если некоторые из них начинаются с параметра
префикс `-'.

Назначает позиционные параметры оболочки или изменяет значения оболочки
параметры. Опция -- присваивает позиционные параметры
аргументы {set}, даже если некоторые из них начинаются с параметра
префикс `-'.

Назначает позиционные параметры оболочки или изменяет значения оболочки
параметры. Опция -- присваивает позиционные параметры
аргументы {set}, даже если некоторые из них начинаются с параметра
префикс `-'.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.