在试图找到
this sed question的答案时,我想出了一个我无法理解的奇怪行为.
$> cat data foo.png abCd.png bar.png baZ.png
任务是使用sed in line将所有带有大写ASCII字符的行替换为小写.所以输出应该是:
$> cat data foo.png abcd.png bar.png baz.png
解决方案应该适用于非gnu sed,就像在Mac上的sed一样
我试图将这个嵌入式awk变成sed的替换部分:
sed -E 's/[^ ]*[A-Z][^ ]*.png/'$(echo \&|awk '{printf("<%s>[%s]",$0,tolower($0))}')'/' data
奇怪的是,这输出了:
foo.png <abCd.png>[abCd.png] bar.png <baZ.png>[baZ.png]
正如你所看到的那样,sed正在拾取带有大写字母的正确行,并且这也达到了awk,但awk的tolower()函数失败并产生相同的文本作为输入.
shell专家可以解释这种奇怪的行为.
原文地址:https://www.jb51.cc/bash/384224.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。