Bash:
匹配模式删除字符
How to: 如何实现:
用变量和模式替换来删除字符:
# 删除所有数字
string="Year2023"
echo "${string//[^0-9]/}"
# 输出:2023
# 删除小写字母
string="HelloWorld"
echo "${string//[a-z]/}"
# 输出:HW用sed进行模式匹配和删除:
echo "Remove vowels from this sentence." | sed 's/[aeiou]//g'
# 输出:Rmv vwls frm ths sntnc.Deep Dive: 深入探究
过去,Unix shell 脚本主要用tr或sed做字符处理。Bash之后加入了内建的模式替换功能,提供更快捷的方法。
替换语法 string/pattern/replacement 里:
string是原始文本;pattern是要匹配的模式;replacement可以是空,这样模式匹配的部分就会被删除。
如果使用sed:
sed很强大,用于文本处理;'s/[pattern]//g'命令将会全局删除匹配模式的字符。
See Also: 相关链接
- Bash 手册: https://www.gnu.org/software/bash/manual/bash.html
sed入门: https://www.gnu.org/software/sed/manual/sed.html- 高级 Bash 脚本编写指南: https://www.tldp.org/LDP/abs/html/