这适用于Linux(Debian):
sed -e 's,^[ \t]*psd\(.*\)\;,,'
Run Code Online (Sandbox Code Playgroud)
在Mac上,我相信我必须使用-E标志,而不是-e:
sed -E 's,^[ \t]*psd\(.*\)\;,,'
Run Code Online (Sandbox Code Playgroud)
但正则表达式不匹配,因此不会删除我想要的行.
关于如何解决这个问题的任何提示?
样本输入:
apa
bepa
psd(cepa);
depa psd(epa);
psd(fepa gepa hepa);
Run Code Online (Sandbox Code Playgroud)
对于该输入,预期输出为:
apa
bepa
depa psd(epa);
Run Code Online (Sandbox Code Playgroud)
Mic*_*ber 13
该-E标志表示使用扩展正则表达式.你应该-e像在Linux上一样使用它.将sed在Mac OS X是基于BSD sed的,所以不具备GNU扩展.
复制样本输入后:
[~ 507] pbpaste | sed -e 's,^[[:space:]]*psd\(.*\);,,'
apa
bepa
depa psd(epa);
Run Code Online (Sandbox Code Playgroud)
在'\t'没有标准'sed',它是GNU扩展.
要匹配a 'tab',您需要'tab'在脚本中添加一个真实的.这在文件中很容易,在shell中更难.
在AIX,Solaris和HP-UX或其他UNIX中也可能发生同样的问题.
或者,您可以使用sed的GNU版本而不是Mac OSX提供的实现.
Mac端口为它提供了一个端口sudo port install gsed.安装后,您可以使用gsed而不是sed.
| 归档时间: |
|
| 查看次数: |
22883 次 |
| 最近记录: |