Используя sed, как мы могли сократить определенную строку из строки текста?

Используя sed, как мы могли сократить определенную строку из строки текста?

Строка->

Email subject: Test email one two

Ожидаемый ответ->

test email one two

Любая справка в этом отношении высоко ценилась бы.

2
задан 27 July 2015 в 20:55

4 ответа

Так как Вы хотите преобразовать все в нижний регистр, с помощью sed:

sed 's/^Email subject: \(.*\)/\L\1/' infile

sed разбивка команды:

  • s: утверждает для выполнения замены
  • /: разделяет команду от шаблона
  • ^: соответствует запуску строки
  • Email subject: соответствия Email subject: строка
  • \(.*\): соответствия и группы любое количество любого символа
  • /: разделяет шаблон от замещающей строки
  • \L: утверждение нулевой ширины, которое вынуждает следующий шаблон быть распечатанным нижний регистр
  • \1: обратная ссылка, которая заменяется первой группой фиксации
2
ответ дан 2 December 2019 в 01:58

Если я не ошибаюсь, Вы хотите извлечь из:

Email subject: Test email one two

только 'фактический' предмет электронной почты:

test email one two

, Таким образом, следующее будет работать:

sed "s/^Email subject: //" test.txt | tr '[:upper:]' '[:lower:]' > output.txt
  • test.txt файлы, содержащие Ваш текст.
  • output.txt будет содержать только слова, которые прибывают, после Email subject:
  • tr '[:upper:]' '[:lower:] преобразовывает все прописные буквы в строчные буквы
1
ответ дан 2 December 2019 в 01:58

Используя чистый bash:

$ str='Email subject: Test email one two'

$ echo "${str#*: }"
Test email one two

, Если Вы хотите первое T как нижний регистр:

$ str='Email subject: Test email one two'

$ echo "${str#*: }"
Test email one two

$ new="${str#*: }"

$ echo "${new,}"
test email one two

Все в одном:

$ str='Email subject: Test email one two' && new="${str#*: }" && echo "${new,}"
test email one two

Здесь мы использовали bash расширение параметра функция.

  • "${str#*: }" получит нас Test email one two, т.е. мы отбрасываем от запуска до : сопровождаемый пространством (:)

  • "${new,}", преобразует первый символ верхнего регистра в нижний регистр

1
ответ дан 2 December 2019 в 01:58

Мои два цента с awk

awk '{sub(/^Email subject: */,""); print tolower($_)}' \
    <<< "Email subject: Today's subject: watch out for delimiters"

Вывод

today's subject: watch out for delimiters
1
ответ дан 2 December 2019 в 01:58

Другие вопросы по тегам:

Похожие вопросы: