Skip to content

variable replacement and truncate in bash

Delete

Left -> Right

1. 一次性从前向后匹配删除

VAR=hahaha
echo ${VAR#*h}
# ahaha

2. 贪婪模式,从前向后匹配删除

VAR=hahaha
echo ${VAR##*h}
# a

Right -> Left

1. 一次性从后向前匹配删除

VAR=hahaha
echo ${VAR%a*}
# hahah

2. 贪婪模式,从后向前匹配删除

VAR=hahaha
echo ${VAR%%a*}
# h

About % and #

  • # 是去掉左边 (在键盘上 #% 的左边)
  • % 是去掉右边 (在键盘上 %# 的右边)
  • 符号用一次是最小匹配,两个连用就是最大匹配

Replacement

一次性替换

VAR=hahaha
echo ${VAR/a/A}
# hAhaha

贪婪模式,全部替换

VAR=hahaha
echo ${VAR//a/A}
# hAhAhA

Truncate

VAR=hahaha
echo ${VAR:0:5} #提取起始 1-5 个字节
# hahah
echo ${VAR:3:2} #提取第 3 个字节右边的连续 2 个字节
# ah