macos - 在 Mac OSX Lion 中,如何使用 sed 将多个空格替换为单个空格?

标签 macos sed osx-lion

friend 们、同事们、油嘴滑舌的自称认识者以及受人尊敬的职业生涯中最耻辱的受害者,

当我尝试在 Max OSX 中执行简单的 UNIX 操作时,我会感到一种明显的疲劳。有人可以告诉我如何使用 sed (不是 awk,不是 perl,除了 sed 之外什么都不是)来获取包含以下内容的 file.txt:

Oh         my I         have Mac                 fatigue

并使其看起来像这样:

Oh my I have Mac fatigue

如果您确实在 Mac OSX Lion 中执行此操作,非常感谢。 (编辑:也不是 Mountain Lion,是不同的操作系统)。我只是花了很长时间在谷歌上搜索一般回答 linux 或 UNIX 的人,遗憾的是这没有多大帮助。

我在标准模式匹配的幸福的、早已被遗忘的日子里尝试了很多东西,当时人们可以快速说出 UNIXy 命令,瞧!他们会表现:

cat file.txt | sed 's/ */ /g'        - O h m y I h a v e M a c f a t i g u e
cat file.txt | sed 's/ \+/ /g'       - no effect
cat file.txt | sed 's/\s\+/ /g'      - no effect
cat file.txt | sed -E -e 's/ */ /g'  - O h m y I h a v e M a c f a t i g u e

告诉我在 Linux 机器上使用 sed 会让我微笑,但它不会得到赞成:) 提前致谢。不确定如果没有 StackOverflow 我会做什么。

最佳答案

这有效(在原生 OS X 10.8.3 上测试):

 cat file.txt | sed -e "s/  */ /g"

(请注意,星号前有两个个空格)

或者删除useless use of cat :

 sed -e "s/  */ /g" < file.txt

关于macos - 在 Mac OSX Lion 中,如何使用 sed 将多个空格替换为单个空格?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15822711/

相关文章:

objective-c - 像从 cmd+tab 一样获取 ProcessList

用于替换数据库插入语句中的引号的正则表达式

macos - 酿造,狮子,Qt 4.8.0

python - OSX 下 pip 中区分大小写的包名称

python - Pygame 窗口在 Mac 上不接收键盘事件

linux - 十六进制查找 20 并在 LInux 中替换为 00

bash - SQLite用新行导入字段

ruby-on-rails - 无法构建 gem native 扩展

javascript - 当我更改代码、保存并在我的浏览器上测试它时,它仍然运行旧代码,为什么?

macos - MacPorts 不使用 mysql5 +server 安装 org.macports.mysql5.plist