匹配模式删除字符

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 脚本主要用trsed做字符处理。Bash之后加入了内建的模式替换功能,提供更快捷的方法。

替换语法 string/pattern/replacement 里:

  • string 是原始文本;
  • pattern 是要匹配的模式;
  • replacement 可以是空,这样模式匹配的部分就会被删除。

如果使用sed

  • sed 很强大,用于文本处理;
  • 's/[pattern]//g' 命令将会全局删除匹配模式的字符。

See Also: 相关链接