2016-01-22 10 views
2

У меня есть вход, который выглядит как:СЭД: Удалите все символы до первого алфавитно-цифрового символа

-|+ string1 
    IAmString2-OrAmI\ \ \ 
\ - 3string3+string4 

Я хочу выхода быть:

string1 
IAmString2-OrAmI\ \ \ 
3string3+string4 

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

Я пришел ближе с:

sed -n 's/[[:alnum:]]/&\n/;s/.*\n//p' 

Но что удаленные до включительно первый алфавитно-цифровой символ, так что я получил результат, который выглядел как:

tring1 
AmString2-OrAmI\ \ \ 
string3+string4 

Любые идеи? Я открыт для всего, что будет работать из сценария bash.

+0

Я удивляюсь, почему это получило downvoted? Он имеет четкие требования, ввод проб, ожидаемый результат и попытку решения. Что еще мы можем попросить? Активировать счетчик. –

+0

Вопрос четко показывает исследовательские усилия и четко объясняет проблему, поэтому я тоже занимаюсь этим. Это освежает, когда новые пользователи задают хорошие вопросы. Добро пожаловать, Ричард! –

ответ

2
$ sed 's/^[^[:alnum:]]*//' file 
string1 
IAmString2-OrAmI\ \ \ 
3string3+string4 
+1

Jeebus. Знаешь, я пробовал это, кроме того, что забыл звездочку. Спасибо, Ed. –

1

Если вы используете GNU СЭД, следующее должно работать:

sed 's/^\W*//' 

Это привязывает выражение в начале линии и соответствует нулю или более последовательных Непро- W символов ORD , заменив их пустой строкой. Обратите внимание, что слово символов включают все буквенно-цифровые символы - и символы подчеркивания. Таким образом, к сожалению, это не сработает, если в начале появляются символы подчеркивания среди не-буквенно-цифровых символов (спасибо, Эд).

Я считаю, что приведенный выше синтаксис проще вводить (и помнить), но он не совместим с POSIX (переносимым в другие системы), как ответ Эд.

+1

@ EdMorton Хорошо замечен. Я забыл, что символ подчеркивания также считается символом * слова *. Я добавлю это к моему ответу. Благодарю. –

Смежные вопросы