gpt4 book ai didi

bash - sed 删除除字母和 ' 之外的所有字符

转载 作者:行者123 更新时间:2023-12-03 15:38:21 25 4
gpt4 key购买 nike

我正在使用这个 sed 命令来去除所有(对我来说)不必要的字符的文档。

sed 's/[^a-zA-Z]/ /g'

然而,在挖掘我的数据之后,我意识到了一个非常基本的错误:
不包括 '剪掉我所有的 don't s 进入 don t s,这很糟糕。

所以我想包括 '在我的正则表达式中。如果我可以这样称呼它,我对这种“编码”仍然是新手,所以请原谅我的新手错误,甚至更好,向我解释一下!
sed 's/[^a-zA-Z']/ /g'这显然不起作用
sed 's/[^a-zA-Z\']/ /g'然而这也不是,我想 \逃脱 ' ?

最佳答案

很好的旧双引号可以保护单引号而无需转义:

sed "s/[^a-zA-Z']/ /g" <<< "don't ... do this"

给出:
don't     do this

编辑:你的代码似乎用空格替换了非字母,但你的问题另有说明,所以我给你另一个版本,删除所有非字母/空格和多次出现的空格(第二个表达式)。
sed -e "s/[^ a-zA-Z']//g" -e 's/ \+/ /' <<< "don't ... do this"

结果:
don't do this

EDIT2:能够保留单引号的替代解决方案(由 Sundeep 提供):
`'s/[^ a-zA-Z\x27]//g'`

注意:我首先尝试按照测试的解决方案对单引号进行转义 here并且没有使用单引号对我有用(总是提示换行)所以我想出了这些替代方案。

关于bash - sed 删除除字母和 ' 之外的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40588240/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com