我正在使用以下sed
命令:
cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\n/'
其规范化如下:
4330M-p -> Ver<newline>
这在 GNU SED 中运行良好,但在 Mac OS X 上的 BSD SED 中, \n 会变成n
这样:
4330M-p -> Vern
将包含随时间变化的版本号的一些输出标准化为静态字符串,后跟换行符。这用作测试的一部分,其中sed
处理后的输出通过已知的黄金文件进行比较diff
,我们不希望由于版本号变化而导致失败,并且进一步需要为我们的目的添加换行符。
我怎样才能用一个在 GNU 和 BSD 版本上都可以工作的方式替换一个添加换行符的字符串sed
,或者我应该只在 Mac OS X 上安装 GNU,sed
因为这无法完成?
答案1
您可以在脚本中创建一个文字换行符,如下所示:
cat version | sed -e 's/[0-9][0-9][0-9][0-9][0-9:M]*-[abp]/Ver\
/'