10

我试图从大写的文件名中取出最后两个字母,并将它们附加到小写的文件名中。我期待命令:

ls | sed -e "s/.*\([A-Z][A-Z]\)$/\0\/\L\1\E/"

为了实现这一点,在我的 Ubuntu 机器上它运行良好,但在我的 Mac 上它只是打印出捕获的正确字母在0/LXXE/哪里。XX

和的 Mac sed 等价物是\0什么?\L\E

我浏览了网络,有几个人注意到 Mac OS X sed 与 Ubuntu sed 不同,但大多数线程都在谈论对-i文件扩展名或空字符串的要求(这以前让我感到困惑)。

4

2 回答 2

30

OSX (BSD) sed 不支持 functions\L等。使用此选项在 Mac 上\E安装:gnu sed

brew install gnu-sed
于 2013-08-18T11:06:28.130 回答
6

awk选择:

ls | awk '{print $0 tolower(substr($0,length($0)-1,2))}'
于 2013-08-18T12:05:27.597 回答