[英]Using sed in a .sh file on Mac OS X
我正在尝试使用命令行解析一些文本文件。 其中一部分涉及在格式错误的电子邮件中重新附加断词。 一个例子:
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=
我想抢“商品”。 我正在使用这种解决方法来完成任务。
我正在使用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终端不喜欢什么?
这很可能是PATH设置。 /bin/bash
使用默认的$PATH
; 不知道为什么,但是也许这取决于您的正常工作外壳(就是bash),或者您的PATH设置位于哪个点文件中。
OS X带有自己的(BSD)sed,它与GNU版本不同,因此不起作用。 在脚本中运行sed
命令将选择BSD sed,而不是您自己安装的GNU sed。 使用完整路径在脚本中进行sed,或在脚本中设置$ PATH。 显然,在Ubuntu上没有问题,因为默认的sed
是GNU。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.