0

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

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

所以字符串

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

会成为

another test test

我已经尝试了很多不同的选项,但它似乎不想工作。有谁知道如何做到这一点?

在每个人开始为这个问题给我负 1 之前,相信我,我已经试图找到答案。

4

4 回答 4

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'
于 2013-06-04T10:54:11.157 回答
2
$ echo "another test \/ \u7896 \n test ha\ppy" | sed -r 's/\S*\\\S*//g' | tr -s '[:blank:]'
another test test
于 2013-06-04T10:55:06.540 回答
1

这可能对您有用(GNU sed):

sed 's/\s*\S*\\\S*//g' file
于 2013-06-04T11:00:56.877 回答
0
string = "another test \/ \u7896 \n test ha\ppy"            
string_no_slashes = " ".join([x for x in string.split() if "\\" not in x])
于 2013-06-04T10:54:27.543 回答