删除包含反斜杠的所有单词

时间:2013-06-04 10:48:57

标签: sed

为了做到这一点,我已经尝试了很多不同的变化。

我只是想使用sed删除以反斜杠开头或包含反斜杠的所有单词。

so string

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

会变成

another test test

我尝试过很多不同的选择,但它似乎并不想工作。有人知道怎么做吗?

在每个人开始给我这个问题减去1之前,请相信我,我试图找到答案。

4 个答案:

答案 0 :(得分:3)

您可以使用str.splitlist 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'

答案 1 :(得分:2)

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

答案 2 :(得分:1)

这可能适合你(GNU sed):

sed 's/\s*\S*\\\S*//g' file

答案 3 :(得分:0)

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