【发布时间】:2012-12-23 04:29:09
【问题描述】:
我正在尝试使用命令行解析一些文本文件。其中一部分涉及在一些格式错误的电子邮件中重新附加损坏的单词。一个例子:
9,650 330,765.0 16.38% NYSE (000) 1,707,915 272,099.0 18.95% Commodit=
ies Close Change % Change Crude Oil (Feb) 19.62 0.32 1.66% Heating Oil (Ja=
我想抢“商品”。我正在使用这个workaround sed 来完成工作。
我使用的是 Mac OS X 10.7 和 GNU sed 版本 4.2.1。如果在命令行我输入
sed ':a;N;$!ba;s/=\r\n//g' ./filename
sed 工作正常。但是,如果我运行这个 bash 脚本:
#!/bin/bash
sed ':a;N;$!ba;s/=\r\n//g' filename
sed 不起作用。但是,相同的脚本可以在 Ubuntu 的命令行下运行:
9,650 330,765.0 16.38% NYSE (000) 1,707,915 272,099.0 18.95% Commodities Close Change % Change Crude Oil (Feb) 19.62 0.32 1.66% Heating Oil (Jan)
在我的 Mac 上,更简单的脚本
#!/bin/bash
sed 's/=//g' filename
成功删除所有等号。我正在尝试不同的字符组合来反斜杠,但没有太大成功。 Mac 终端不喜欢什么的任何提示?
【问题讨论】:
-
示例文件在每行最后一个等号之后包含一个空格。这可能是您的命令失败的原因吗?另外,也许尝试将您的 shebang 更改为
#!/bin/sh以使其在 OSX 上运行。祝你好运。 -
@steve 谢谢你的建议。不幸的是,将 /bin/bash 更改为 /bin/sh 不起作用。 :( 我更新了示例文件以删除空格,它们不在实际文件中。
标签: macos bash scripting sed terminal