【发布时间】:2016-07-23 04:29:30
【问题描述】:
我正在尝试使用以下 sed 命令从文件中删除字符串:
pattern="$name;$date;$hour"
sed -i.bak "/${pattern}/I d" $BOOKFILE
但问题是: 在 OS X 上 - sed 不支持不区分大小写的匹配
我需要使用不区分大小写的方式从文件中删除一个字符串。 例如,如果我插入“a;20161010;11”而不是“A;20161010;11”,它必须识别并从文件中删除相同的字符串。
我无法使用其他语言的脚本,如 perl 或 TCL 等...
【问题讨论】:
-
不,它不是重复的,因为我不能使用其他语言的脚本,如 perl 或 TCL 等......因为它是大学的练习
-
恐怕
sed二进制文件不会改变以适应您的需求。您可能不得不使用 something else,或者获取支持此功能的sed二进制文件。 -
使用Homebrew,安装GNU
sed和brew install gnu-sed;使用gsed调用它。 -
如果您真的只想使用区分大小写的 sed,那么也许您可以使用 sed 使 pattern 不区分大小写,例如
sed -E "s/a|A/[aA]/g"应用于模式将使其对 a 不区分大小写。如果您只期望小写或大写而不是混合大小写,则可以只使用两种模式,每种模式一种。 HTH