Сценарий оболочки для добавления полной остановки в конце каждой строки (не содержащей полной остановки) в файле - PullRequest
3 голосов
/ 20 октября 2019

У меня есть файл, в каждой строке которого есть предложение, например,

Random stuff,
"First sentence",
"second sentence.",
"Third sentence!"
More Random Stuff,

и т. Д. *

Я хочу на месте изменить только строки в кавычках, т. Е. 2-ю, 3-ю и 3-ю. 4-я строка в приведенном выше примере.

Я хочу сделать следующие изменения -

  1. Добавить полный стоп в конце строки (если отсутствует полный стоп или восклицательный знак)
  2. Сделать заглавную букву первого символа (если она еще не заглавная)

Я пробовал следующее решение для добавления полной остановки -

sed -i 's/[^!.]",/.",/g' $file

ВышеКоманда удаляет последний символ предложения как -

"First sentenc.",

И если я попробую следующую команду -

sed -i 's/[^!.]",/&.",/g' $file

, я получу следующий результат -

"First sentence",.",

Мой желаемый результат -

"First sentence.",

Как правильно решить эту проблему, не получив нежелательных результатов, как показано выше? Кроме того, как я могу сделать первый символ капитала?

Файл после модификации должен быть -

Random stuff,
"First sentence.",
"Second sentence.",
"Third sentence!"
More Random Stuff,

1 Ответ

2 голосов
/ 20 октября 2019

Это может работать для вас (GNU sed):

sed -E '/^".*",/{s/[[:alpha:]]/\U&/;s/([^!?.])",$/\1.",/}' file

Сосредоточиться только на кавычках. Прописные буквы первого алфавитного символа и вставьте точку перед закрывающей кавычкой, если это не восклицательный знак / вопросительный знак или точка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...