2013-06-04 4 views
0

ive было tring sooooo много разных вариантов, чтобы получить это право.удалить все слова, содержащие обратную косую черту

Я просто ищу, чтобы использовать sed, чтобы удалить все слова, начиная с или с обратной косой чертой.

так струна

another test \/ \u7896 \n test ha\ppy 

станет

another test test 

я пробовал Су много различных вариантов, но он не кажется, хотят работать. У кого-нибудь есть идея, как это сделать?

и до того, как все начнут давать мне минус 1 для этого вопроса, поверьте мне, я попытался найти ответ.

ответ

2
$ echo "another test \/ \u7896 \n test ha\ppy" | sed -r 's/\S*\\\S*//g' | tr -s '[:blank:]' 
another test test 
+1

Вы можете добавить '| tr -s '' 'для удаления нескольких пробелов. – fedorqui

+1

@fedorqui Правильно, я уже добавлял это, когда заметил ваш комментарий =). Благодарю. – kirelagin

3

Вы можете использовать str.split и list comprehension:

>>> strs = "another test \/ \u7896 \n test ha\ppy" 
>>> [x for x in strs.split() if '\\' not in x] 
['another', 'test', 'test'] 

# use str.join to join the list 
>>> ' ' .join([x for x in strs.split() if '\\' not in x]) 
'another test test' 
+0

им на самом деле ищет SED команды, чтобы сделать это, так как его часть os.command optiom, и мой запрос очень длинный. имеет несколько sed и grep –

+3

@ RHK-S8, так что это за [тэг: python] делает в вашем вопросе? – kirelagin

0
string = "another test \/ \u7896 \n test ha\ppy"    
string_no_slashes = " ".join([x for x in string.split() if "\\" not in x]) 
1

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

sed 's/\s*\S*\\\S*//g' file 
Смежные вопросы