通过正则表达式查找并将匹配替换为Bash中的小写

时间:2013-05-21 12:17:31

标签: regex bash sed awk grep

我想将匹配给定正则表达式的文件的所有内容替换为它们的小写等价物。像:

grep -o '[^ ]*[A-Z][^ ]*.png' file-21-05-2013.sql* | awk '{print tolower($0)}'

上面的行查找给定文件中至少包含一个大写字符的所有字符串,并打印小写的等效字符。

我想用上面整个命令的输出替换grep命令的输出

这有意义吗?

2 个答案:

答案 0 :(得分:2)

如果您使用的是GNU系统,那么GNU sed具有以下扩展名:

\L
Turn the replacement to lowercase until a \U or \E is found, 

以下命令应该可以满足您的需求:

sed  "s/\([^ ]*[A-Z][^ ]*.png\)/\L\1/g" file-21-05-2013.sql*

答案 1 :(得分:1)

sed -nr '/^.*\b(\w*[A-Z]\w*\.png).*$/{s//\1/;s/.*/\L\0/;p}' file