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/