Мне нужно удалить текст из строки перед разделителем.
Например:
(123434): hello::{apple,orange,mango}.
Мне нужно удалить текст перед первым :
. то есть (123434)
.
Есть ли в linux команда для выполнения этой задачи?
command-line
text-processing
user80538
источник
источник
sed
илиawk
Ответы:
Эта
sed
команда должна сделать свое дело. Следующая команда перезапишет файл:Чтобы просто напечатать вывод, уберите
-i
флаг. Чтобы поместить вывод в новый файл, удалите-i
флаг и перенаправьте вывод:источник
Вы можете использовать
cut
:источник
Вы можете сделать это с помощью довольно простой инструкции Bash :
mytext="(123434): hello::{apple,orange,mango}."
echo ${mytext#*)}
Это напечатает
: hello::{apple,orange,mango}.
. Вы можете вырезать префиксы и суффиксы аналогичным образом. Кроме того, определения префиксов и суффиксов могут содержать символы подстановки.Префикс среза - до первого совпадения с подстановочным знаком префикса:
${variable#prefix}
Префикс среза - до последнего совпадения с подстановочным знаком префикса:
${variable##prefix}
Сокращенный суффикс - до первого совпадения с суффиксом:
${variable%suffix}
Сократить суффикс - до последнего совпадения с суффиксом:
${variable%%suffix}
На первый взгляд может показаться неясным, см. Следующий пример:
В последнем примере шаблон не совпадает, поэтому ничего не вырезано.
источник
echo ${mytext#*:}:
. Это будет правильно обрабатывать строки, как(123)(434): hello::{apple,orange,mango}.
и123434: hello::{apple,orange,mango}
.