Используя sed
, как мы могли сократить определенную строку из строки текста?
Строка->
Email subject: Test email one two
Ожидаемый ответ->
test email one two
Любая справка в этом отношении высоко ценилась бы.
Так как Вы хотите преобразовать все в нижний регистр, с помощью sed
:
sed 's/^Email subject: \(.*\)/\L\1/' infile
sed
разбивка команды:
s
: утверждает для выполнения замены /
: разделяет команду от шаблона ^
: соответствует запуску строки Email subject:
соответствия Email subject:
строка \(.*\)
: соответствия и группы любое количество любого символа /
: разделяет шаблон от замещающей строки \L
: утверждение нулевой ширины, которое вынуждает следующий шаблон быть распечатанным нижний регистр \1
: обратная ссылка, которая заменяется первой группой фиксации Если я не ошибаюсь, Вы хотите извлечь из:
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:]
преобразовывает все прописные буквы в строчные буквы Используя чистый 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,}"
, преобразует первый символ верхнего регистра в нижний регистр
Мои два цента с awk
awk '{sub(/^Email subject: */,""); print tolower($_)}' \
<<< "Email subject: Today's subject: watch out for delimiters"
Вывод
today's subject: watch out for delimiters