一尘不染

从bash中的字符串中删除所有特殊字符和大小写

linux

我正在编写一个bash脚本,需要分析文件名。

它将需要删除所有特殊字符(包括空格): “!?.-_ ,并将所有大写字母更改为小写字母。类似于:

Some_randoM data1-A
More Data0

至:

somerandomdata1a
moredata0

我已经看到许多问题可以使用许多不同的编程语言来实现,而不能使用bash来实现。有什么好方法吗?


阅读 248

收藏
2020-06-07

共1个答案

一尘不染

cat yourfile.txt | tr -dc '[:alnum:]\n\r' | tr '[:upper:]' '[:lower:]'

第一个tr删除特殊字符。d表示删除,c表示补码(反转字符集)。因此,-dc意味着删除除指定字符外的所有字符。在\n\r包括保持Linux或Windows风格的换行符,我假设你想要的。

第二个将大写字符转换为小写。

2020-06-07